Как извлечь файлы из файла .tar.bz2 или .tar.gz в Linux
Файлы tar представляют собой сжатые архивы. Вы будете часто сталкиваться с ними при использовании дистрибутива Linux, такого как Ubuntu, или даже при использовании терминала в macOS. Вот как можно извлечь — или распаковать — содержимое tar-файла, также известного как tarball.
Что означают .tar.gz и .tar.bz2?
Файлы с расширением .tar.gz
или .tar.bz2
являются сжатыми архивными файлами. Файл только с расширением .tar
несжатый, но это будет очень редко.
Часть расширения файла .tar
означает tape archive и является причиной того, что оба этих типа файлов называются tar-файлами. . Файлы tar восходят к 1979 году, когда была создана команда tar
, позволяющая системным администраторам архивировать файлы на ленту. Сорок лет спустя мы все еще используем команду tar
для извлечения файлов tar на наши жесткие диски. Кто-то где-то, вероятно, все еще использует tar
с лентой.
Суффикс расширения .gz
или .bz2
указывает, что архив был сжат с помощью gzip
или bzip2
. алгоритм сжатия. Команда tar
будет успешно работать с обоими типами файлов, поэтому не имеет значения, какой метод сжатия использовался — и она должна быть доступна везде, где у вас есть оболочка Bash. Вам просто нужно использовать соответствующие параметры командной строки tar
.
Стоит отметить, что все в этой статье также работает в подсистеме Windows для Linux, что позволяет вам установить оболочку Bash внутри Windows 10 или Windows 11, хотя есть и другие способы открытия файлов tar.gz в Windows.
File Types | |
Extension | DAT · 7Z · BZ2 · XML · RTF · XLSX · WEBP · EPUB · MP4 · AVI · MOBI · SVG · MP3 · REG · PHP · LOG · PPTX · PDF · MPEG · WMA · M4V · AZW · LIT · TAR · TAR.GZ · RAR |
Извлечение файлов из файлов Tar
Допустим, вы скачали два файла с нотами. Один файл называется ukulele_songs.tar.gz
, другой — guitar_songs.tar.bz2
. Эти файлы находятся в каталоге Downloads.
Давайте извлечем песни для укулеле:
tar -xvzf ukulele_songs.tar.gz
По мере извлечения файлов они отображаются в окне терминала.
Мы использовали следующие параметры командной строки:
- -x: извлечь файлы из файла tar.
- -v: подробный список файлов по мере их извлечения.
- -z: Gzip, используйте gzip для распаковки tar-файла.
- -f: File, имя tar-файла, с которым мы хотим, чтобы
tar
работал. За этой опцией должно следовать имя tar-файла.
Перечислите файлы в каталоге с помощью ls
, и вы увидите, что был создан каталог под названием Ukulele Songs. Извлеченные файлы находятся в этом каталоге. Откуда взялся этот каталог? Он содержался в файле tar
и был извлечен вместе с файлами.
Теперь давайте извлечем гитарные песни. Для этого мы будем использовать почти ту же команду, что и раньше, но с одним важным отличием. Суффикс расширения .bz2
говорит нам, что он был сжат с помощью команды bzip2. Вместо использования параметра -z
(gzip) мы будем использовать параметр -j
(bzip2).
tar -xvjf guitar_songs.tar.bz2
И снова файлы отображаются в терминале по мере их извлечения. Чтобы было ясно, параметры командной строки, которые мы использовали с tar
для файла .tar.bz2
, были следующими:
- -x: извлечь файлы из файла tar.
- -v: подробный список файлов по мере их извлечения.
- -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-файлов перед их извлечением
До сих пор мы просто совершили прыжок веры и извлекли файлы невидимым глазом. Вы могли бы посмотреть, прежде чем прыгать. Вы можете просмотреть содержимое файла tar
перед его извлечением с помощью параметра -t
(список). Обычно удобно передавать вывод через команду less
.
tar -tf ukulele_songs.tar.gz | less
Обратите внимание, что нам не нужно использовать параметр -z
для вывода списка файлов. Нам нужно добавить параметр -z
только тогда, когда мы извлекаем файлы из файла .tar.gz
. Точно так же нам не нужна опция -j
для вывода списка файлов в файле tar.bz2
.
Прокручивая вывод, мы видим, что все в файле tar хранится в каталоге с именем Ukulele Songs, а в этом каталоге есть файлы и другие каталоги.
Мы видим, что каталог Ukulele Songs содержит каталоги с именами Random Songs, Ramones и Possibles.
Чтобы извлечь все файлы из каталога в файле tar, используйте следующую команду. Обратите внимание, что путь заключен в кавычки, так как в пути есть пробелы.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Чтобы извлечь один файл, укажите путь и имя файла.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Вы можете извлечь выбранные файлы, используя подстановочные знаки, где *
представляет собой любую строку символов, а ?
представляет любой отдельный символ. Использование подстановочных знаков требует использования параметра --wildcards
.
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Извлечение файлов без извлечения каталогов
Если вы не хотите, чтобы структура каталогов в tar-файле воссоздавалась на вашем жестком диске, используйте параметр --strip-components
. Опция --strip-components
требует числового параметра. Число представляет, сколько уровней каталогов следует игнорировать. Файлы из игнорируемых каталогов по-прежнему извлекаются, но структура каталогов не реплицируется на вашем жестком диске.
Если мы укажем --strip-components=1
в нашем примере tar-файла, самая верхняя папка Ukulele Songs в tar-файле не будет создана на жестком диске. Файлы и каталоги, которые были бы извлечены в этот каталог, извлекаются в целевой каталог.
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
с хорошей степенью детального контроля, нам нужно запомнить только несколько этих параметров. .
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | 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 · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts