우리는 윈도우에서 파일 압축을 한번에 하지만 리눅스와 유닉스는 두 과정을 거쳐야 한다.
① a.txt, b.txt, c.txt, d.txt 라는 4개의 파일을 test 라는 한 개의 파일로 묶는 '파일 묶기' 과정 (bundle!)
② 그 test 파일을 압축하는 '파일 압축' 과정
↓
(사실 윈도우에 있는 압축 프로그램이 이 파일 묶기와 파일 압축을 한 번에 해준다.)
tar 명령은 여러 파일들을 하나의 파일로 묶어주는 명령으로 사용한다. 리눅스에서 사용되는 GNU tar 는 옵션을 이용해서 파일로 묶거나 풀 때 압축 관련 작업을 동시에 진행할 수 있다.
tar [옵션] [파일명]
옵션 사용 시 - 기호를 사용하지 않아도 되지만, 인자값이 있는 옵션을 여러 개 지정하는 경우에는 - 기호를 사용해야 한다.
옵션 | 내용 |
-f(필수) | 묶음 파일을 이름을 지정합니다. |
-c | 지정한 파일이나 디렉터리를 하나로 묶어서 새로운 tar파일을 생성합니다. |
-x | 생성된 tar파일을 풉니다. |
-t | 묶음을 풀기 전에 묶인 경로를 보여줍니다. (c를 하면 생성, x를 하면 해제, t를 하면 뭐로 이루어져있는지 파일목록 보여주기) |
-C(대문자) | 묶음을 풀 때 지정된 디렉터리에 압축을 풉니다. 지정하지 않으면 묶을 때와 동일한 디렉터리에 묶음이 풀립니다. |
-v | visaul의 의미로 파일이 묶이거나 풀리는 과정을 보여줍니다. 예를 들어 c옵션과 같이 사용하면 묶여지는 동안 파일의 이름을 보여줍니다. |
-r | 기존의 tar파일 뒤에 파일을 추가합니다. (빼먹었을 경우나, 추가로 더 묶어야 할 때) |
-h | 심볼릭 링크가 가리키고 있는 원본 파일을 저장합니다. |
-p | 파일이 생성되었을 때의 권한을 그대로 유지하게 해줍니다. |
-P | 맨 앞의 /를 포함해서 절대 경로로 관련 정보를 유지합니다. |
--exclude | 특정 파일만 제외시키고 묶을 수 있어요. |
--remove-files | tar압축 후 파일 지우기 |
-Z | compress 관련 옵션으로 예전 UNIX 계열 표준 압축 파일인 tar.Z에 사용 |
-z | gzip 관련 옵션으로 tar.gz 압축 파일 생성~ (tar+gzip) |
-j | bzip2 관련 옵션으로 압축 파일 tar.bz2 생성 (tar+bzip2) |
-J | xz관련 옵션으로 압축 파일 tar.xz 생성 (tar+xz) |
< 파일 압축 및 풀기 >
먼저 파일 압축하고 푸는 과정을 실습을 통해 알아보자. (★파일 묶기는 좀 뒤에 있음)
1. gzip, gunzip
ls 명령을 내려 httpd-2.4.48.tar.gz 파일이 있는지 확인한다.
이 파일이 있어야 압축 과정을 진행할 수 있다.
파일 다운 방법↓
2021.08.29 - [Linux] - 리눅스 - ftp
cp /etc/services y 명령을 통해 /etc/services 파일을 y 라는 이름으로 복사해온다.
ls 명령을 통해 y가 잘 복사됬는지 확인한다.
이제 파일 크기를 확인해보자.
ls -l 명령을 내리면 파일 크기가 670293 인데, 잘 와닫지 않는다.
ls -lh 명령을 내려서 좀 더 직관적인 파일 크기를 확인해본다. (h 명령은 human-readable 의 약자이다)
gzip y 명령을 하여 y 파일을 압축해준다.
ls -lh 명령을 내리면 아까 y 파일 크기 655K 가 133k 로 바뀐 것을 확인할 수 있다.
또한 파일 이름은 y.gz 로 변했으며 빨간색으로 바뀌었다. (확장자 gz)
이번엔 파일 압축을 풀어본다.
gunzip y.gz 명령을 내려서 압축을 해제하고
ls -lh 명령을 내려 파일 크기를 확인해본다. (133K -> 655K 로 돌아왔다)
정리
- gzip y : y 파일 압축하기
- gunzip y.gz : y.gz 파일 압축 풀기
2. xz, unxz
이번엔 xz 명령을 사용해볼 것이다.
- xz y : y 파일을 압축한다 (크기: 98K)
- unxz y.xz : y.xz 파일 압축을 푼다. (크기: 655K)
< 파일 묶기 및 해제 >
이번엔 여러개의 파일을 하나의 파일로 묶는 tar 명령과 옵션들에 대해 알아볼 것이다.
httpd-2.4.48.tar.gz 파일 압축을 해제해보자.
gunzip httpd-2.4.48.tar.gz 입력 (여기서 꿀팁! h를 쓰고 tab 키를 누르면 자동완성이 된다)
ls -lh 명령을 내려 파일 크기를 확인해보면 9.0M -> 41M 로 바뀌었다.
또한 확장자도 tar.gz 에서 tar 로 바뀌었다.
tar 는 묶여 있는 것이다 (테이프 아카이브 줄임말)
현재 httpd-2.4.48.tar 와 y 파일이 있었는데
tar xf httpd-2.4.48.tar 명령을 내리고 ls 명령을 내려 다시 확인해보니
httpd-2.4.48 와 httpd-2.4.48.tar 와 y 파일이 있다.
-f(필수) | 묶음 파일을 이름을 지정합니다. |
-x | 생성된 tar 파일을 풉니다. |
tar cf h.tar httpd-2.4.48.tar 명령을 내려 h.tar 라는 새로운 묶음 파일을 만들어준다.
-f(필수) | 묶음 파일을 이름을 지정합니다. |
-c | 지정한 파일이나 디렉터리를 하나로 묶어서 새로운 tar파일을 생성합니다 |
'🦇 Linux' 카테고리의 다른 글
리눅스 - ftp (0) | 2021.08.29 |
---|---|
리눅스 - rpm, yum (0) | 2021.08.29 |
[내가 보려고 쓴] 리눅스 프로세스 개념 (0) | 2021.08.29 |
[내가 보려고 쓴] 리눅스 - du, df (0) | 2021.08.25 |
리눅스 - bashrc, bash_profile (0) | 2021.08.25 |