LinuxКак сделать

Как извлечь файлы из файла .tar.gz или .tar.bz2 в Linux

Оболочка Bash на рабочем столе Unity
Фатмавати Ахмад Заенури / Shutterstock.com

Файлы Tar являются сжатыми архивами. Вы будете часто сталкиваться с ними при использовании дистрибутива Linux, такого как Ubuntu, или даже при использовании терминала в macOS. Вот как извлечь или распаковать содержимое файла tar, также известного как tarball.

Что означают .tar.gz и .tar.bz2?

Файлы с расширением .tar.gz или .tar.bz2 являются сжатыми архивными файлами. Файл только с расширением .tar является несжатым, но это будет очень редко.

Часть .tar расширения файла обозначает архив данных и является причиной того, что оба этих типа файлов называются tar-файлами. Файлы tar датируются вплоть до 1979 года, когда была создана команда tar позволяющая системным администраторам архивировать файлы на ленту. Сорок лет спустя мы все еще используем команду tar для извлечения файлов tar на наши жесткие диски. Кто-то где-то, вероятно, все еще использует tar с лентой.

.gz расширения .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 : подробный список файлов по мере их извлечения.
  • -z : Gzip, используйте gzip для распаковки файла tar.
  • -f : Файл, имя файла tar, с которым мы хотим работать. За этой опцией должно следовать имя файла tar.

Перечислите файлы в каталоге с помощью ls и вы увидите, что был создан каталог под названием Ukulele Songs. Извлеченные файлы находятся в этом каталоге. Откуда этот каталог? Он содержался в файле tar и был извлечен вместе с файлами.

Каталог песен Укулеле, созданный в каталоге загрузок

Теперь давайте извлечем гитарные песни. Для этого мы будем использовать почти ту же команду, что и раньше, но с одним важным отличием. Суффикс расширения .bz2 говорит нам, что он был сжат с помощью команды bzip2. Вместо использования опции -z (gzip) мы будем использовать опцию -j (bzip2).

  tar -xvjf guitar_songs.tar.bz2 

Извлечение tar-файла гитарных песен в папку Downloads

Еще раз, файлы перечислены в терминал, поскольку они извлечены. Для ясности, параметры командной строки, которые мы использовали с tar для файла .tar.bz2 :

  • -x : Извлечь, извлечь файлы из tar-файла.
  • -v : подробный список файлов по мере их извлечения.
  • -j : Bzip2, используйте bzip2 для распаковки файла tar.
  • -f : Файл, имя файла tar, с которым мы хотим работать.

Если мы перечислим файлы в каталоге Download, мы увидим, что был создан другой каталог с именем Guitar Songs.

Каталог гитарных песен, созданный в каталоге Downloads

Выбор места для извлечения файлов в

Если мы хотим извлечь файлы в место, отличное от текущего каталога, мы можем указать целевой каталог, используя опцию -C (указанный каталог).

  tar -xvjf guitar_songs.tar.gz -C ~ / Документы / Песни / 

Просматривая наш каталог Documents / Songs, мы увидим, что каталог Guitar Songs создан.

Каталог гитарных песен, созданный в каталоге Documents / Songs

Обратите внимание, что целевой каталог уже должен существовать, tar не создаст его, если он отсутствует. Если вам нужно создать каталог и заставить tar распаковать файлы в него одной командой, вы можете сделать это следующим образом:

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

Опция -p (parent) заставляет mkdir создавать любые необходимые родительские каталоги, обеспечивая создание целевого каталога.

Просмотр внутри tar-файлов перед их извлечением

До сих пор мы только что совершили прыжок веры и извлекли файлы из виду незаметно. Вы можете посмотреть, прежде чем прыгать. Вы можете просмотреть содержимое файла tar прежде чем извлекать его, используя опцию -t (list). Обычно удобно передавать данные через команду less .

  tar -tf ukulele_songs.tar.gz |  Меньше 

Обратите внимание, что нам не нужно использовать опцию -z для -z списка файлов. Нам нужно только добавить опцию -z когда мы извлекаем файлы из файла .tar.gz . Точно так же нам не нужна опция -j для -j списка файлов в файле tar.bz2 .

Содержимое файла tar пропущено меньше

Прокручивая вывод, мы видим, что все в файле tar содержится в каталоге с названием Ukulele Songs, и в этом каталоге есть файлы и другие каталоги.

Второй взгляд на содержимое tar-файла пропускается через

Мы видим, что каталог Ukulele Songs содержит каталоги под названием Random Songs, Ramones и возможный.

Чтобы извлечь все файлы из каталога в файле tar, используйте следующую команду. Обратите внимание, что путь заключен в кавычки, потому что в пути есть пробелы.

  tar -xvzf ukulele_songs.tar.gz "Песни укулеле / ​​Ramones /" 

Извлечение одной папки из файла tar

Чтобы извлечь отдельный файл, укажите путь и имя файла.

  tar -xvzf ukulele_songs.tar.gz "Песни укулеле / ​​023 - My Babe.odt" 

Извлечение одного файла из файла tar

Вы можете извлечь выборку файлов, используя подстановочные знаки, где * представляет любую строку символов и ? представляет любой отдельный символ. Использование подстановочных знаков требует использования параметра --wildcards .

  tar -xvz --wildcards -f ukulele_songs.tar.gz "Песни укулеле / ​​Возможные варианты / B *" 

Извлечение песен из tar с подстановочными знаками

Извлечение файлов без извлечения каталогов

Если вы не хотите, чтобы структура каталогов в файле tar воссоздалась на вашем жестком диске, используйте параметр --strip-components . Опция --strip-components требует числового параметра. Число представляет, сколько уровней каталогов следует игнорировать. Файлы из игнорируемых каталогов по-прежнему извлекаются, но структура каталогов не копируется на вашем жестком диске.

Если мы укажем --strip-components=1 нашем примере tar-файла, самый верхний каталог песен Ukulele Songs внутри tar-файла не будет создан на жестком диске. Файлы и каталоги, которые были бы извлечены в этот каталог, извлекаются в целевой каталог.

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

Извлечение файлов из tar-файла с помощью --strip-components = 1

В нашем примере tar-файла есть только два уровня вложенности каталогов. Поэтому, если мы используем --strip-components=2 , все файлы извлекаются в целевой каталог, и никакие другие каталоги не создаются.

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

Извлечение файлов из tar-файла с помощью --strip-components = 2

Если вы посмотрите на справочную страницу Linux, то увидите, что tar является хорошим кандидатом на звание «команда, имеющая большинство параметров командной строки». К счастью, мы можем извлечь файлы из .tar.gz и tar.bz2 Файлы tar.bz2 с хорошей степенью детального контроля, нам нужно запомнить только несколько этих опций.

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone