Linux의 .tar.gz 또는 .tar.bz2 파일에서 파일을 추출하는 방법

게시 됨: 2022-01-29
Unity 데스크톱 개념의 Bash 셸
Fatmawati Achmad Zaenuri/Shutterstock.com

Tar 파일은 압축된 아카이브입니다. Ubuntu와 같은 Linux 배포판을 사용하거나 macOS에서 터미널을 사용하는 동안에도 자주 접하게 됩니다. 다음은 tarball이라고도 하는 tar 파일의 내용을 추출하거나 압축을 푸는 방법입니다.

.tar.gz 및 .tar.bz2는 무엇을 의미합니까?

확장자가 .tar.gz 또는 .tar.bz2 인 파일은 압축된 아카이브 파일입니다. 확장자가 .tar 인 파일은 압축되지 않지만 매우 드뭅니다.

파일 확장자의 .tar 부분은 테이프 아카이브 를 나타내며 이러한 파일 유형을 모두 tar 파일이라고 하는 이유입니다. Tar 파일은 시스템 관리자가 파일을 테이프에 보관할 수 있도록 tar 명령이 생성된 1979년으로 거슬러 올라갑니다. 40년이 지난 후에도 우리는 여전히 tar 명령을 사용하여 하드 드라이브에 tar 파일을 추출하고 있습니다. 어딘가에 누군가가 여전히 테이프와 함께 tar 를 사용하고 있을 것입니다.

.gz 또는 .bz2 확장자는 gzip 또는 bzip2 압축 알고리즘을 사용하여 아카이브가 압축되었음을 나타냅니다. tar 명령은 두 가지 유형의 파일에서 모두 잘 작동하므로 어떤 압축 방법이 사용되었는지는 중요하지 않으며 Bash 셸이 있는 모든 곳에서 사용할 수 있어야 합니다. 적절한 tar 명령줄 옵션을 사용하기만 하면 됩니다.

Tar 파일에서 파일 추출

두 개의 악보 파일을 다운로드했다고 가정해 보겠습니다. 하나의 파일은 ukulele_songs.tar.gz 라고 하고 다른 하나는 guitar_songs.tar.bz2 라고 합니다. 이 파일은 다운로드 디렉토리에 있습니다.

다운로드 디렉토리에 있는 두 개의 tar 파일

우쿨렐레 노래를 추출해 보겠습니다.

 tar -xvzf ukulele_songs.tar.gz
광고

파일이 추출되면 터미널 창에 나열됩니다.

tar 파일에서 모든 파일 추출

우리가 사용한 명령줄 옵션은 다음과 같습니다.

  • -x : 압축을 풀고 tar 파일에서 파일을 검색합니다.
  • -v : Verbose, 추출되는 파일을 나열합니다.
  • -z : Gzip, gzip을 사용하여 tar 파일의 압축을 풉니다.
  • -f : 파일, tar 가 작업할 tar 파일의 이름. 이 옵션 뒤에는 tar 파일 이름이 와야 합니다.

ls 를 사용하여 디렉토리의 파일을 나열하면 Ukulele Songs라는 디렉토리가 생성되었음을 알 수 있습니다. 추출된 파일은 해당 디렉토리에 있습니다. 이 디렉토리는 어디에서 왔습니까? tar 파일에 포함되어 있었고 파일과 함께 추출되었습니다.

다운로드 디렉토리에 생성된 우쿨렐레 노래 디렉토리

이제 기타 곡을 추출해 보겠습니다. 이를 위해 이전과 거의 동일한 명령을 사용하지만 한 가지 중요한 차이점이 있습니다. .bz2 확장자 접미사는 bzip2 명령을 사용하여 압축되었음을 알려줍니다. -z (gzip) 옵션을 사용하는 대신 -j (bzip2) 옵션을 사용합니다.

 tar -xvjf 기타_songs.tar.bz2 

다운로드 폴더에서 기타 노래 tar 파일 추출

다시 한 번, 파일은 압축이 풀릴 때 터미널에 나열됩니다. 분명히 하기 위해 .tar.bz2 파일에 대해 tar 와 함께 사용한 명령줄 옵션은 다음과 같습니다.

  • -x : 압축을 풀고 tar 파일에서 파일을 검색합니다.
  • -v : Verbose, 추출되는 파일을 나열합니다.
  • -j : Bzip2, bzip2를 사용하여 tar 파일의 압축을 풉니다.
  • -f : 파일, tar가 작업할 tar 파일의 이름.

Download 디렉토리의 파일을 나열하면 Guitar Songs라는 다른 디렉토리가 생성되었음을 알 수 있습니다.

다운로드 디렉토리에 생성된 기타 노래 디렉토리

파일을 추출할 위치 선택

현재 디렉토리가 아닌 다른 위치에 파일을 추출하려면 -C (지정된 디렉토리) 옵션을 사용하여 대상 디렉토리를 지정할 수 있습니다.

 tar -xvjf Guitar_songs.tar.gz -C ~/Documents/Songs/
광고

Documents/Songs 디렉토리를 보면 Guitar Songs 디렉토리가 생성된 것을 볼 수 있습니다.

Documents/Songs 디렉토리에 생성된 기타 노래 디렉토리

대상 디렉토리는 이미 존재해야 하며 존재하지 않으면 tar 가 생성하지 않습니다. 디렉토리를 생성하고 tar 가 하나의 명령으로 파일을 모두 추출하도록 해야 하는 경우 다음과 같이 수행할 수 있습니다.

 mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

-p (parents) 옵션은 mkdir 이 필요한 모든 상위 디렉토리를 생성하도록 하여 대상 디렉토리가 생성되도록 합니다.

압축을 풀기 전에 Tar 파일 내부 살펴보기

지금까지 우리는 믿음을 버리고 보이지 않는 파일을 추출했습니다. 도약하기 전에 보고 싶을 수도 있습니다. -t (목록) 옵션을 사용하여 압축을 풀기 전에 tar 파일의 내용을 검토할 수 있습니다. 일반적으로 less 명령을 통해 출력을 파이프하는 것이 편리합니다.

 tar -tf ukulele_songs.tar.gz | 더 적은

파일을 나열하기 위해 -z 옵션을 사용할 필요가 없습니다. .tar.gz 파일에서 파일을 추출 할 때 -z 옵션만 추가하면 됩니다. 마찬가지로 tar.bz2 파일에 있는 파일을 나열하기 위해 -j 옵션이 필요하지 않습니다.

less를 통해 파이프된 tar 파일의 내용

출력을 스크롤하면 tar 파일의 모든 항목이 Ukulele Songs라는 디렉토리에 보관되어 있고 그 디렉토리 안에 파일과 기타 디렉토리가 있음을 알 수 있습니다.

less를 통해 파이프된 tar 파일 내용의 두 번째 보기

광고

Ukulele Songs 디렉토리에 Random Songs, Ramones 및 Possibles라는 디렉토리가 포함되어 있음을 알 수 있습니다.

tar 파일 내의 디렉토리에서 모든 파일을 추출하려면 다음 명령을 사용하십시오. 경로에 공백이 있으므로 경로를 따옴표로 묶습니다.

 tar -xvzf ukulele_songs.tar.gz "우쿨렐레 노래/라몬/" 

tar 파일에서 단일 폴더 추출

단일 파일을 추출하려면 파일의 경로와 이름을 제공하십시오.

 tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt" 

tar 파일에서 단일 파일 추출

와일드카드를 사용하여 파일 선택을 추출할 수 있습니다. 여기서 * 는 임의의 문자열을 나타내고 ? 단일 문자를 나타냅니다. 와일드카드를 사용하려면 --wildcards 옵션을 사용해야 합니다.

 tar -xvz --wildcards -f ukulele_songs.tar.gz "우쿨렐레 노래/가능성/B*" 

와일드카드를 사용하여 tar에서 노래 추출

디렉토리를 추출하지 않고 파일 추출

tar 파일의 디렉토리 구조를 하드 드라이브에 다시 생성하지 않으려면 --strip-components 옵션을 사용하십시오. --strip-components 옵션에는 숫자 매개변수가 필요합니다. 숫자는 무시할 디렉터리 수준을 나타냅니다. 무시된 디렉터리의 파일은 여전히 ​​추출되지만 디렉터리 구조는 하드 드라이브에 복제되지 않습니다.

예제 tar 파일과 함께 --strip-components=1 을 지정하면 tar 파일 내의 Ukulele Songs 최상위 디렉토리가 하드 드라이브에 생성되지 않습니다. 해당 디렉토리로 추출되었을 파일 및 디렉토리는 대상 디렉토리에서 추출됩니다.

 tar -xvzf ukulele_songs.tar.gz --strip-components=1 

--strip-components=1을 사용하여 tar 파일에서 파일 추출

광고

예제 tar 파일에는 두 가지 수준의 디렉토리 중첩만 있습니다. 따라서 --strip-components=2 를 사용하면 모든 파일이 대상 디렉토리에서 추출되고 다른 디렉토리는 생성되지 않습니다.

 tar -xvzf ukulele_songs.tar.gz --strip-components=2 

--strip-components=2를 사용하여 tar 파일에서 파일 추출

Linux 매뉴얼 페이지를 보면 tar 가 "명령줄 옵션이 가장 많은 명령"이라는 제목에 적합한 후보임을 알 수 있습니다. 고맙게도 .tar.gztar.bz2 파일에서 좋은 수준의 세부 제어로 파일을 추출할 수 있도록 하려면 이러한 옵션 중 소수만 기억하면 됩니다.

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