콘텐츠로 건너뛰기

리눅스에서의 파일 압축 및 압축해제

리눅스 서버를 관리하다보면 터미널 환경에서 파일 또는 디렉터리를 압축하거나 압축을 풀어야 하는 경우가 종종 발생한다. GUI 환경이 아니다보니 이런 일이 발생하면 당황하기 일쑤다. 리눅스의 터미널 환경에서 파일이나 디렉터리를 압축하고 압축해제하는 방법에 대해 정리한다.

유틸리티

홈페이지와 관련된 압축파일은 대부분 *.tar.gz이나 *.tgz 형태로 압축되어 있다. 우선 리눅스에서의 압축에 많이 사용되는 tar와 gzip, 그리고 zip에 대해 먼저 알아본다.

tar

tarTape ARchive(위키백과, 나무위키)는 배포나 백업을 위해 여러 개의 파일을 tarball이라고 하는 하나의 파일로 묶는 유틸리티로 파일의 크기를 줄이는 압축은 하지 않는다. tar는 묶는 과정에서 파일명, 시간, 소유권, 퍼미션, 디렉터리 구조 등의 정보를 그대로 보존한다. 확장자는 .tar를 이용한다.

TAR options
OptionDescription
-cCreate묶음 파일 생성
-pPreserve Permmissions파일 권한 유지
-vVerbose진행 과정을 화면에 출력
-fFile파일 이름 지정
-xeXtract묶음 파일 해제
-zgZipgzip을 이용해 압축 또는 압축해제

gzip

gzipGNU zip(위키백과)한 개의 파일을 압축하는 유틸리티로, 여러 개의 파일을 하나의 파일로 압축하는 것은 불가능하다. 따라서 여러 개의 파일 또는 디렉터리를 압축하기 위해서는 먼저 tar를 이용해 대상 파일 또는 디렉터리를 하나의 파일로 묶은 다음 gzip으로 이 파일을 압축한다. 기본적으로 확장자는 .gz를 이용하며, tar와 함께 이용하는 경우 .tar.gz 또는 .tgz를 이용한다.

zip

zip(위키백과, 나무위키)여러 개의 파일 또는 디렉터리의 크기를 줄여 압축하고 하나로 묶는 유틸리티로, 확장자는 .zip을 이용한다.

압축 및 압축해제

*.tar

tar로 묶기

tar로 여러 개의 파일 또는 디렉터리를 하나의 파일로 묶을 때에는 아래 명령어를 사용한다.

$ tar -cvf [file].tar [file or directory]

예를 들어, banghj라는 디렉터리를 banghj.tar라는 파일로 묶기 위해서는 아래 명령어를 사용하면 된다.

$ tar -cvf banghj.tar banghj/

또한, 현재 디렉터리의 모든 txt 파일을 banghj.tar라는 파일로 묶기 위해서는 아래 명령어를 사용한다.

$ tar -cvf banghj.tar *.txt

현재 디렉터리의 모든 txt 파일과 doc 파일을 banghj.tar라는 파일로 묶기 위한 명령어는 아래와 같다.

$ tar -cvf banghj.tar *.txt *.doc

tar로 묶음해제

tar로 묶인 파일을 해제할 때에는 아래와 같은 명령어를 사용한다. 묶을 때와 달리 c 옵션 대신 x 옵션을 사용한다.

$ tar -xvf [file].tar

예를 들어, banghj.tar라는 묶음파일을 해제하기 위해서는 아래 명령어를 사용하면 된다.

$ tar -xvf banghj.tar

*.tar.gz

gzip으로 압축

tar로 파일 또는 디렉터리를 하나의 파일로 묶은 다음 gzip으로 압축할 수도 있지만 통상 tar의 z 옵션을 이용하여 명령어 한 줄로 압축한다. 여러 개의 파일또는 디렉터리를 압축할 때에는 아래 명령어를 사용한다.

$ tar -zcvf [file].tar.gz [file or directory]
$ tar -zcvf banghj.tar.gz banghj/
$ tar -zcvf banghj.tar.gz *.txt
$ tar -zcvf banghj.tar.gz *.txt *.doc

gzip으로 압축해제

gzip으로 압축된 파일을 해제할 때에는 아래와 같은 명령어를 사용한다. tar 묶음해제와 마찬가지로 압축할 때와 달리 c 옵션 대신 x 옵션을 사용한다.

$ tar -zxvf [file].tar.gz
$ tar -zxvf banghj.tar.gz

*.zip

zip으로 압축

zip으로 여러 개의 파일 또는 디렉터리를 하나의 파일로 압축할 때에는 아래 명령어를 사용한다.

$ zip [file].zip [file or directory]

예를 들어, 현재 디렉터리의 모든 파일을 banghj.zip라는 파일로 압축하기 위해서는 아래 명령어를 사용하면 된다.

$ zip banghj.zip ./*

r 옵션을 이용하면 하위 디렉터리 포함하여 압축할 수 있다.

$ zip [file].zip -r [file or directory]
$ zip banghj.zip -r ./*

zip으로 압축해제

zip으로 압축된 파일을 해제할 때에는 아래 명령어를 사용한다.

$ unzip [file].zip
$ unzip banghj.zip

d 옵션을 이용하면 특정 디렉터리에 압축파일을 해제할 수 있다.

$ unzip [file].zip -d [directory]
$ unzip banghj.zip -d ./banghj

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다