How to Compress and Extract Files Using the tar Command on Linux | 리눅스에서 tar 커맨드로 파일 압축하고 추출하기

리눅스에서 tar 커맨드는 “tarballs”로도 불리는 .tar.gz 또는 .tgz 아카이브 파일을 만들때 주로 쓰인다. 이 커맨드는 옵션이 엄청 많지만 tar로 아카이브를 만들기 위해서는 몇 개만 알면 된다. tar커맨드는 아카이브에서 파일을 추출할 수도 있다.

리눅스 배포판에 포함된 GNU tar 커맨드는 압축 기능을 제공한다. .tar 아카이브를 만들고 나서 gzip이나 bzip2로 압축하는 일을 한 커맨드로 할 수 있다. 만들어지는 파일이 .tar.gz나 .tar.bz2인 이유이다.

 

디렉토리 전체 또는 파일 하나를 압축하기

아래 커맨드를 사용하면 리눅스에서 디렉토리 전체 또는 파일 하나를 압축할 수 있다. 지정한 디렉토리 아래에 있는 모든 디렉토리도 그 안에 포함되어 압축된다. 다르게 말하면 recursive하다.

tar -czvf name-of-archive.tar.gz /path/to/directory-or-file

옵션의 뜻은 아래와 같다:

  • -c: 아카이브를 생성한다. (create)
  • -z: 아카이브를 gzip으로 압축한다.
  • -v: 아카이브를 만드는 동안 진행 상황을 터미널에 표시한다. “verbose” 모드로도 알려져 있ㄷ다. v 옵션은 기능에 영향을 주지 않지만, 도움이 된다.
  • -f: 아카이브의 파일 이름을 지정한다. (filename)

현재 디렉토리 안에 “stuff”라는 이름의 디렉토리가 있고 archive.tar.gz라는 이름으로 저장하고 싶다고 하자. 아래 커맨드를 실행하면 된다:

tar -czvf archive.tar.gz stuff

혹은, 현재 시스템의 /usr/local/something에 어떤 디렉토리가 있고 archive.tar.gz라는 이름으로 압축하고 싶다고 하자. 아래 커맨드를 실행하면 된다:

tar -czvf archive.tar.gz /usr/local/something

 

여러 개의 디렉토리 또는 파일을 압축하기

관련 링크: 리눅스 터미널에서 파일 관리하기: 당신이 알아야 할 11개 커맨드

tar 커맨드를 사용할 때에는 보통 하나의 디렉토리를 압축하지만, 여러 개의 디렉토리 또는 여러 개의 파일, 또는 여러 개의 디렉토리와 파일을 압축할 때에도 사용할 수 있다. 그냥 파일 또는 디렉토리 리스트를 입력하면 된다. 예를 들어, /home/ubuntu/Downloads 디렉토리, /usr/local/stuff 디렉토리, /home/ubuntu/Documents/notes.txt 파일을 압축하고 싶다고 하자. 아래 커맨드를 실행하면 된다:

tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txt

백업하고 싶은 디렉토리나 파일의 리스트를 모두 적으면 된다.

 

디렉토리와 파일 제외하기

가끔은 디렉토리 전체에서 일부 파일과 디렉토리를 제외하고 압축하고 싶을 때가 있다. 제외할 디렉토리나 파일을 –exclude 옵션과 함께 각각 적으면 된다.

예를 들어, /home/ubuntu를 압축하고 싶은데, /home/ubuntu/Downloads와 /home/ubuntu/.cache 디렉토리를 제외하고 싶다. 아래처럼 하면 된다:

tar -czvf archive.tar.gz /home/ubuntu –exclude=/home/ubuntu/Downloads –exclude=/home/ubuntu/.cache

–exclude 옵션은 매우 강력하다. 이 옵션은 사실 디렉토리와 파일의 이름이 아닌 패턴을 이용한다. 이것을 이용하여 훨씬 더 많은 일을 할 수 있다. 예를 들어, 아래 커맨드로는 디렉토리 전체를 압축하면서 모든 .mp4 파일을 제외할 수 있다:

tar -czvf archive.tar.gz /home/ubuntu –exclude=*.mp4

 

bzip2 압축 사용하기

.tar.gz 또는 .tgz 파일을 만들기 위해 gzip 압축이 흔히 사용되지만, tar 커맨드는 bzip2 커맨드도 지원한다. .tar.bz2, .tar.bz, .tbz 이름을 가진 bzip2 압축 파일을 만들 수 있다. gzip을 위한 -z 옵션을 bzip2를 위한 -j 옵션으로 바꾸기만 하면 된다.

gzip이 더 빠르지만 보통 압축을 덜 해서 더 큰 파일을 만들게 된다. bzip2는 더 느리지만, 압축을 더 해서 더 작은 파일을 만들 수 있다. 크기를 줄인 리눅스 배포판들이 기본적으로 gzip을 지원하고 bzip2를 지원하지 않는 경우가 있어서 gzip이 더 흔하기도 하다. 하지만 일반적으로 gzip과 bzip2는 거의 같고 비슷하게 작동한다.

예를 들어, stuff 디렉토리를 압축하는 첫 번째 예시 대신에 아래 커맨드를 실행하면 된다:

tar -cjvf archive.tar.bz2 stuff

 

아카이브 추출하기

아카이브 파일이 있을 때, tar 커맨드로 추출할 수 있다. 아래 커맨드는 archive.tar.gz 파일의 내용을 현재 디렉토리에 추출한다.

tar -xzvf archive.tar.gz

위에서 아카이브를 만들 때 사용했던 커맨드에서 -c 옵션이 -x 옵션으로 바뀐 것만 빼면 똑같다. 만드는 것이 아니라 추출하는 것을 나타낸다 (extract).

아카이브의 내용을 특정 디렉토리에 추출하려면 커맨드 맨 뒤에 -C 옵션을 붙이면 된다. 예를 들어, ㅇ래 커맨드는 archive.tar.gz 파일의 내용을 /tmp 디렉토리에 추출한다:

tar -xzvf archive.tar.gz -C /tmp

만약 bzip2로 압축된 파일이라면 위 커맨드에서 “z”를 “j”로 바꾼다.


 

지금까지 tar 커맨드를 가장 간단한 용도를 알아보았다. 이 커맨드는 추가 옵션이 너무 많아서 여기에서 다 이야기할 수 없다. 더 많은 정보를 알고 싶다면 쉘에서 info tar 커맨드를 실행해서 tar 커맨드의 자세한 정보 페이지를 볼 수 있다. 다 읽었으면 q 키를 눌러서 정보 페이지에서 나올 수 있다. tar 매뉴얼 온라인 페이지를 봐도 된다.

그래픽 리눅스 데스크탑을 쓰고 있다면, 시스템에 포함된 파일 압축 프로그램이나 파일 관리자를 사용해서 .tar 파일을 만들거나 추출할 수 있다. 윈도우에서는 공짜 7-Zip 프로그램을 사용해서 .tar 아카이브를 추출하고 만들 수 있다.

 

#.

xvzf와 cvzf 옵션이 무슨 뜻인지 알고 나니 앞으로는 덜 까먹을 것 같네요.

 

원문.

https://www.howtogeek.com/248780/how-to-compress-and-extract-files-using-the-tar-command-on-linux/

209 Comments

  1. Heya i am for the first time here. I found this board and I find It truly useful & it helped me out much. I hope to give something back and aid others like you helped me.