반응형


기본 압축 명령어 사용법

gzip, gunzip 을 사용한다.

gzip, gunzip 커맨드는 기본적으로 개별 파일 단위로 압축 / 해제를 진행하며, 압축 / 해제 진행시 원래 파일은 삭제된다. 압축시에는 원래 파일명에 .gz 확장자가 추가된 파일이 생성된다.

 

 

@ 압축하기

> gzip test.txt

 

위의 명령어가 실행되고 나면, test.txt.gz 파일이 생성되며, test.txt 파일은 삭제된다.

 

 

@ 압축 해제

> gunzip test.txt.gz

 

압축 해제시에도 마찬가지로 test.txt 파일이 생성되며, test.txt.gz 파일은 삭제된다.

 

압축 해제는 gzip의 -d 옵션으로도 가능하다. (decompress)

> gzip -d test.txt.gz

 


@ 압축 / 해제 후 원래 파일을 유지하기

-k 옵션을 사용하면 된다. (keep)

 

> gzip -k test.txt

 

 

@ 여러 파일을 동시에 압축하기

파일명을 차례대로 적어 주면 된다.

> gzip a.txt b.txt c.txt

 

혹은 

> gzip *.txt

 

실행후에는 a.txt.gz, b.txt.gz, c.txt.gz 의 형태로, 개별 파일이 생성된다. 그리고 원래 파일인 a.txt, b.txt, c.txt 파일은 삭제가 된다.

 

 

pigz 명령어 사용법

여러 파일을 압축해야 한다면, 멀티 코어 CPU를 지원하는 pigz를 사용하면 더 빠른게 압축이 진행된다.

아래 링크에서 배포하고 있으며, 최신 리눅스에서는 apt나 yum으로 설치가 가능하다.

http://zlib.net/pigz/

 

기본 동작 방식이나 옵션은 gzip, gunzip 과 매우 유사하다. 

> pigz *.txt

 

위의 명령어가 실행되면 .txt.gz 파일들이 생성되고, 원본 txt 파일들은 삭제된다.

 

압축해제

> pigz -d *.txt.gz

 

 

tar 명령어 사용법

여러 파일들을 하나의 파일로 묶어줄 때는 tar 명령어를 사용한다.

 

@ tar 명령어를 이용해서 하나의 파일로 묶기

> tar -cvf all.tar *.txt

 

위의 명령어를 실행하면, all.tar 파일이 생성되며, 원래 txt 파일들은 삭제되지 않는다.

 

 

@ tar 명령어를 이용해서 묶인 파일을 해제하기

> tar -xvf all.tar

 

위의 명령어를 실행하면 all.tar 파일에 묶여 있던 txt 파일들이 생성되며, all.tar 파일은 삭제되지 않는다. 

 

묶을 때는 c 옵션, 해제할 때는 x 옵션

-v 옵션은 verbose를 의미하며, 압축 / 해제되는 파일을 화면에 표시되게 해준다.

-f 옵션은 파일명을 지정할 때 사용한다.

 

 

@ 하나의 파일로 묶으면서 gzip으로 압축하기

-z 옵션을 추가한다.

> tar -czvf all.tar.gz *.txt

 

 

@ 하나의 파일로 묶으면서 bzip2로 압축하기

-j 옵션을 추가한다.

> tar -cjvf all.tar.bz2 .

 

 

@ 압축된 tar 파일 해제하기

> tar -xvf all.tar.gz
> tar -xvf all.tar.bz2

 

 

 

cf. all.tar.gz 파일을 gzip (혹은 gunzip)으로 압축 해제하면, all.tar 파일이 생성된다. gzip (혹은 gunzip)으로 압축 해제해서 생성된 all.tar 파일은 -cvf 옵션으로 그냥 tar로 묶은 파일과 동일하다.

 

cf2. 압축 혹은 묶을 대상 파일들을 '*' 대신 '.' 으로 쓰는 이유는.. '*' 을 사용할 경우, 현재 폴더에 있는 hidden 파일들이 포함되지 않기 때문임 (sub 폴더 안에 있는 hidden 파일들은 포함이 됨)

 

 

응용편

@ tar에서 pigz을 이용하기

> tar -cvf all.tar.gz -I pigz .

 

현재 경로에 있는 모든 파일들을 pigz를 사용해서 압축하라는 의미

-I 옵션은 --use-compress-program 의 짧은 표현

 

아래 명령어와 결과는 같지만 CPU 코어 수에 따라 훨씬 빠른 결과가 나올 수 있음

> tar -czvf all.tar.gz .

 

아래와 같이 사용도 가능함

> tar -cvf - . | pigz > all.tar.gz

 

압축을 해제할 때도 마찬가지로 사용가능

> tar -xvf all.tar.gz -I pigz

 

 

@ tar 작업시 working directory 지정하기

> tar -xzvf all.tar.gz -C ../test

 

-C 옵션은 --directory 의 짧은 표현으로, 원래 GNU 스펙상으로는 tar로 묶는 경우에도 작동하게 되어 있는데.. 실제로 많은 linux 배포판에서 묶는 경우에는 제대로 작동하지 않고, 해제시에만 제대로 작동한다고 함.. Ubuntu 에서 테스트시에도 묶는 경우에는 제대로 동작하지 않았음.

 

만약 묶는 경우에도 directory 옵션을 사용하고 싶다면.. 아래와 같이 압축될 파일명에 절대 경로를 지정하면, 우회해서 사용이 가능함.

> cd /opt/test && tar -cvf /root/test.tar.gz -I pigz . && cd -

 

 

@ standard output 

gzip, gunzip, pigz 등은 -c 옵션으로 결과를 standard out (화면출력) 으로 처리가 가능.

이 경우 원본 파일이 삭제 되지 않음

 

따라서 아래 커맨드들은 모두 결과가 (거의) 같음

> gzip -k abc.txt
> gzip -c abc.txt > abc.txt.gz
> pigz -c abc.txt > abc.txt.gz

 

테스트 결과 Ubuntu기준 -k 옵션을 사용한 경우에는 abc.txt.gz 의 파일 생성 일자가 abc.txt와 같은 날짜로 기록되는데, redirect (>) 를 사용한 경우에는 파일 생성 일자가 실행시간으로 기록됨

반응형

+ Recent posts