Linux에서 tar 명령을 사용하여 파일을 압축하고 추출하는 방법

게시 됨: 2022-07-23

압축된 Tarball 헤더 우분투

Linux의 tar 명령은 종종 "tarball"이라고도 하는 .tar.gz 또는 .tgz 아카이브 파일을 만드는 데 사용됩니다. 이 명령에는 많은 옵션이 있지만 tar로 아카이브를 빠르게 만들려면 몇 글자만 기억하면 됩니다. tar 명령은 결과 아카이브도 추출할 수 있습니다.

Linux 배포판에 포함된 GNU tar 명령에는 압축이 통합되어 있습니다. .tar 아카이브를 만든 다음 단일 명령으로 gzip 또는 bzip2 압축으로 압축할 수 있습니다. 이것이 결과 파일이 .tar.gz 파일 또는 .tar.bz2 파일인 이유입니다.

업데이트, 7/18/22: 이 기사의 정확성을 검토했으며 최신 버전의 Ubuntu 및 기타 Linux 배포판에서 여전히 작동하는지 확인할 수 있습니다.

전체 디렉토리 또는 단일 파일 압축

Linux에서 전체 디렉토리 또는 단일 파일을 압축하려면 다음 명령을 사용하십시오. 또한 지정한 디렉토리 내의 다른 모든 디렉토리를 압축합니다. 즉, 재귀적으로 작동합니다.

 tar -czvf 아카이브 이름.tar.gz /path/to/directory-or-file

이러한 스위치가 실제로 의미하는 바는 다음과 같습니다.

  • -c: C 아카이브를 만듭니다.
  • -z: 아카이브를 g z ip로 압축합니다.
  • -v : 아카이브를 만드는 동안 터미널에 진행 상황을 표시합니다. "verbose" 모드라고도 합니다. v는 이러한 명령에서 항상 선택 사항이지만 유용합니다.
  • -f : 아카이브의 파일 이름을 지정할 수 있습니다.

현재 디렉토리에 "stuff"라는 디렉토리가 있고 이를 archive.tar.gz라는 파일에 저장하려고 한다고 가정해 보겠습니다. 다음 명령을 실행합니다.

 tar -czvf archive.tar.gz 물건

또는 현재 시스템의 /usr/local/something에 디렉토리가 있고 이를 archive.tar.gz라는 파일로 압축하려고 한다고 가정해 보겠습니다. 다음 명령을 실행합니다.

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

원하는 폴더에서 "tar -czvf"를 실행하여 모든 내용을 묶고 압축합니다.

한 번에 여러 디렉토리 또는 파일 압축

관련: Linux 터미널에서 파일을 관리하는 방법: 알아야 할 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

백업하려는 디렉토리 또는 파일을 원하는 만큼 나열하십시오.

"tar" 명령으로 한 번에 여러 디렉토리를 압축하는 Ubuntu 터미널.

디렉토리 및 파일 제외

어떤 경우에는 전체 디렉토리를 압축하고 싶지만 특정 파일과 디렉토리는 포함하지 않을 수 있습니다. 제외하려는 각 디렉토리나 파일에 --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 

"tar" 명령은 일부 파일을 선택적으로 무시하도록 조정할 수 있습니다.

대신 bzip2 압축 사용

gzip 압축은 .tar.gz 또는 .tgz 파일을 만드는 데 가장 자주 사용되지만 tar는 bzip2 압축도 지원합니다. 이를 통해 종종 .tar.bz2, .tar.bz 또는 .tbz 파일로 명명되는 bzip2 압축 파일을 생성할 수 있습니다. 이렇게 하려면 여기 명령에서 gzip의 -z를 bzip2의 -j로 바꾸면 됩니다.

Gzip이 더 빠르지만 일반적으로 압축률이 약간 낮아서 파일 크기가 다소 커집니다. Bzip2는 느리지만 압축률이 조금 더 높기 때문에 파일 크기가 다소 작아집니다. Gzip은 기본적으로 gzip 지원을 포함하지만 bzip2 지원은 포함하지 않는 일부 제거된 Linux 시스템에서 더 일반적입니다. 그러나 일반적으로 gzip과 bzip2는 실질적으로 동일하며 둘 다 비슷하게 작동합니다.

예를 들어, stuff 디렉토리를 압축하기 위해 제공한 첫 번째 예제 대신 다음 명령을 실행합니다.

 tar -cjvf archive.tar.bz2 물건 

gzip 대신 bzip2 압축을 실행하는 터미널.

아카이브 추출

아카이브가 있으면 tar 명령으로 압축을 풀 수 있습니다. 다음 명령은 archive.tar.gz의 내용을 현재 디렉토리로 추출합니다.

 tar -xzvf 아카이브.tar.gz

-x 스위치가 -c 스위치를 대체한다는 점을 제외하고는 위에서 사용한 아카이브 생성 명령과 동일합니다. 아카이브를 만드는 대신 압축을 도록 지정합니다.

아카이브의 내용을 특정 디렉토리로 추출할 수 있습니다. 명령 끝에 -C 스위치를 추가하면 됩니다. 예를 들어, 다음 명령은 archive.tar.gz 파일의 내용을 /tmp 디렉토리로 추출합니다.

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

파일이 bzip2로 압축된 파일인 경우 위 명령의 "z"를 "j"로 바꿉니다.

tarball 아카이브에서 파일을 추출하려면 "-czvf" 인수 대신 "-xzvf"와 함께 "tar"를 실행하십시오.


이것은 tar 명령의 가장 간단한 사용법입니다. 이 명령에는 많은 추가 옵션이 포함되어 있으므로 여기에 모두 나열할 수는 없습니다. 자세한 내용은. 쉘에서 info tar 명령을 실행하여 tar 명령의 자세한 정보 페이지를 봅니다. 완료되면 q 키를 눌러 정보 페이지를 종료합니다. 온라인에서 tar의 매뉴얼을 읽을 수도 있습니다.

그래픽 Linux 데스크탑을 사용하는 경우 데스크탑에 포함된 파일 압축 유틸리티 또는 파일 관리자를 사용하여 .tar 파일을 생성하거나 추출할 수도 있습니다. Windows에서 무료 7-Zip 유틸리티를 사용하여 .tar 아카이브를 추출하고 생성할 수 있습니다.

관련: 개발자 및 열광자를 위한 최고의 Linux 노트북