리눅스 서버를 관리하다보면 터미널 환경에서 파일 또는 디렉터리를 압축하거나 압축을 풀어야 하는 경우가 종종 발생한다. GUI 환경이 아니다보니 이런 일이 발생하면 당황하기 일쑤다. 리눅스의 터미널 환경에서 파일이나 디렉터리를 압축하고 압축해제하는 방법에 대해 정리한다.
유틸리티
홈페이지와 관련된 압축파일은 대부분 *.tar.gz
이나 *.tgz
형태로 압축되어 있다. 우선 리눅스에서의 압축에 많이 사용되는 tar와 gzip, 그리고 zip에 대해 먼저 알아본다.
tar
tarTape ARchive(위키백과, 나무위키)는 배포나 백업을 위해 여러 개의 파일을 tarball이라고 하는 하나의 파일로 묶는 유틸리티로 파일의 크기를 줄이는 압축은 하지 않는다. tar는 묶는 과정에서 파일명, 시간, 소유권, 퍼미션, 디렉터리 구조 등의 정보를 그대로 보존한다. 확장자는 .tar
를 이용한다.
Option | Description | |
---|---|---|
-c | Create | 묶음 파일 생성 |
-p | Preserve Permmissions | 파일 권한 유지 |
-v | Verbose | 진행 과정을 화면에 출력 |
-f | File | 파일 이름 지정 |
-x | eXtract | 묶음 파일 해제 |
-z | gZip | gzip을 이용해 압축 또는 압축해제 |
gzip
gzipGNU zip(위키백과)은 한 개의 파일을 압축하는 유틸리티로, 여러 개의 파일을 하나의 파일로 압축하는 것은 불가능하다. 따라서 여러 개의 파일 또는 디렉터리를 압축하기 위해서는 먼저 tar를 이용해 대상 파일 또는 디렉터리를 하나의 파일로 묶은 다음 gzip으로 이 파일을 압축한다. 기본적으로 확장자는 .gz
를 이용하며, tar와 함께 이용하는 경우 .tar.gz
또는 .tgz
를 이용한다.
압축 및 압축해제
*.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