Как извлечь файлы из файла .tar.bz2 или .tar.gz в Linux
Вот все, что вам нужно знать о распаковке файла в Linux
Ключевые выводы
- Файлы Tar — это сжатые архивы, используемые в дистрибутивах Linux, таких как Ubuntu. Их можно извлечь с помощью команды tar в терминале.
- Расширения .tar.gz и .tar.bz2 указывают, что файлы tar сжимаются с использованием алгоритма сжатия gzip или bzip2.
- Извлечение файлов из файла tar можно выполнить с помощью команды tar с опциями -x, -v и -z (.gz) или -j (bz2) в зависимости от типа сжатия. Извлеченные файлы можно перенаправить в определенный каталог с помощью опции -C.
Файлы 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.
Типы файлов
Extension
DAT·7Z·BZ2·XML·RTF·XLSX·WEBP·EPUB·MP4· M4A· 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
. Эти файлы находятся в каталоге «Загрузки».
Давайте извлечем (иногда называемое «untar» вместо извлечения) песни для гавайской гитары:
tar -xvzf ukulele_songs.tar.gz
По мере извлечения файлов они отображаются в окне терминала.
Параметры командной строки, которые мы использовали:
- -x: извлечь файлы из tar-файла.
- -v: подробный список файлов по мере их извлечения.
- -z: Gzip, используйте gzip для распаковки tar-файла.
- -f: Файл, имя tar-файла, с которым мы хотим, чтобы
tar
работал. За этой опцией должно следовать имя tar-файла.
Перечислите файлы в каталоге с помощью ls
, и вы увидите, что создан каталог под названием «Песни для укулеле». Извлеченные файлы находятся в этом каталоге. Откуда взялся этот каталог? Он содержался в файле tar
и был извлечен вместе с файлами.
Теперь давайте извлечем гитарные песни. Для этого мы будем использовать почти ту же команду, что и раньше, но с одним важным отличием. Суффикс расширения .bz2
сообщает нам, что он был сжат с помощью команды bzip2. Вместо использования параметра -z
(gzip) мы будем использовать параметр -j
(bzip2) для разархивирования файла bz2.
tar -xvjf guitar_songs.tar.bz2
И снова файлы отображаются на терминале по мере их извлечения. Для ясности: параметры командной строки, которые мы использовали с tar
для файла .tar.bz2
, были следующими:
- -x: извлечь файлы из tar-файла.
- -v: подробный список файлов по мере их извлечения.
- -j: Bzip2, используйте bzip2 для распаковки tar-файла.
- -f: Файл, имя tar-файла, с которым мы хотим, чтобы tar работал.
Если мы перечислим файлы в каталоге «Загрузки», мы увидим, что был создан еще один каталог под названием «Песни для гитары».
Выбор места для извлечения файлов
Если мы хотим извлечь файлы в место, отличное от текущего каталога, мы можем указать целевой каталог, используя опцию -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 хранится в каталоге под названием «Песни для укулеле», и в этом каталоге есть файлы и другие каталоги.
Мы видим, что каталог «Песни для укулеле» содержит каталоги под названием «Случайные песни», «Рамоны» и «Возможные».
Чтобы извлечь все файлы из каталога внутри файла 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-comComponents
. Опция --strip-comComponents
требует числового параметра. Число показывает, сколько уровней каталогов следует игнорировать. Файлы из игнорируемых каталогов по-прежнему извлекаются, но структура каталогов не копируется на ваш жесткий диск.
Если мы укажем --strip-comComponents=1
в нашем примере tar-файла, самый верхний каталог «Песни для укулеле» в tar-файле не будет создан на жестком диске. Файлы и каталоги, которые должны были быть извлечены в этот каталог, извлекаются в целевой каталог.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
В нашем примере tar-файла имеется только два уровня вложенности каталогов. Поэтому, если мы используем --strip-comComponents=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· tr | |
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 |