Linux의 .tar.gz 또는 .tar.bz2 파일에서 파일을 추출하는 방법
게시 됨: 2022-01-29Tar 파일은 압축된 아카이브입니다. 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 -xvzf ukulele_songs.tar.gz
파일이 추출되면 터미널 창에 나열됩니다.
우리가 사용한 명령줄 옵션은 다음과 같습니다.
- -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.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 디렉토리가 생성된 것을 볼 수 있습니다.
대상 디렉토리는 이미 존재해야 하며 존재하지 않으면 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
옵션이 필요하지 않습니다.
출력을 스크롤하면 tar 파일의 모든 항목이 Ukulele Songs라는 디렉토리에 보관되어 있고 그 디렉토리 안에 파일과 기타 디렉토리가 있음을 알 수 있습니다.
Ukulele Songs 디렉토리에 Random Songs, Ramones 및 Possibles라는 디렉토리가 포함되어 있음을 알 수 있습니다.
tar 파일 내의 디렉토리에서 모든 파일을 추출하려면 다음 명령을 사용하십시오. 경로에 공백이 있으므로 경로를 따옴표로 묶습니다.
tar -xvzf ukulele_songs.tar.gz "우쿨렐레 노래/라몬/"
단일 파일을 추출하려면 파일의 경로와 이름을 제공하십시오.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
와일드카드를 사용하여 파일 선택을 추출할 수 있습니다. 여기서 *
는 임의의 문자열을 나타내고 ?
단일 문자를 나타냅니다. 와일드카드를 사용하려면 --wildcards
옵션을 사용해야 합니다.
tar -xvz --wildcards -f ukulele_songs.tar.gz "우쿨렐레 노래/가능성/B*"
디렉토리를 추출하지 않고 파일 추출
tar 파일의 디렉토리 구조를 하드 드라이브에 다시 생성하지 않으려면 --strip-components
옵션을 사용하십시오. --strip-components
옵션에는 숫자 매개변수가 필요합니다. 숫자는 무시할 디렉터리 수준을 나타냅니다. 무시된 디렉터리의 파일은 여전히 추출되지만 디렉터리 구조는 하드 드라이브에 복제되지 않습니다.
예제 tar 파일과 함께 --strip-components=1
을 지정하면 tar 파일 내의 Ukulele Songs 최상위 디렉토리가 하드 드라이브에 생성되지 않습니다. 해당 디렉토리로 추출되었을 파일 및 디렉토리는 대상 디렉토리에서 추출됩니다.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
예제 tar 파일에는 두 가지 수준의 디렉토리 중첩만 있습니다. 따라서 --strip-components=2
를 사용하면 모든 파일이 대상 디렉토리에서 추출되고 다른 디렉토리는 생성되지 않습니다.
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Linux 매뉴얼 페이지를 보면 tar
가 "명령줄 옵션이 가장 많은 명령"이라는 제목에 적합한 후보임을 알 수 있습니다. 고맙게도 .tar.gz
및 tar.bz2
파일에서 좋은 수준의 세부 제어로 파일을 추출할 수 있도록 하려면 이러한 옵션 중 소수만 기억하면 됩니다.
리눅스 명령어 | ||
파일 | tar · pv · 고양이 · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · 조인 · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 보기 · 문자열 · 유형 · 이름 바꾸기 · zip · 압축 풀기 · 마운트 · 언마운트 · 설치 · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · 패치 · 변환 · rclone · 파쇄 · srm | |
프로세스 | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · 종료 · 재부팅 · 정지 · poweroff · passwd · lscpu · crontab · 날짜 · bg · fg | |
네트워킹 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
관련: 개발자 및 열광자를 위한 최고의 Linux 노트북