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

Фатмавати Ахмад Заенури/Shutterstock.com

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

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

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

Часть .tar расширения файла обозначает t ape ar chive и является причиной того, что оба этих типа файлов называются tar-файлами. , Файлы tar датируются вплоть до 1979 года, когда была создана команда tar , позволяющая системным администраторам архивировать файлы на ленту. Сорок лет спустя мы все еще используем команду 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 . Подробно, перечисляйте файлы по мере их извлечения.
  • -z : Gzip, используйте gzip для распаковки файла tar.
  • -f : файл, имя файла 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, с которым мы хотим работать.

Если мы перечислим файлы в каталоге 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 ~/Документы/Песни/Скачанные/

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

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

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

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

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

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

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

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

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

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

 tar -xvzf ukulele_songs.tar.gz "Песни гавайской гитары/023 - My Babe.odt" 

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

 tar -xvz --wildcards -f ukulele_songs.tar.gz "Песни на гавайской гитаре/Возможные варианты/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 с хорошей степенью детального контроля, нам нужно запомнить только несколько из этих опций.

Оцените статью
TutoryBird.Ru
Добавить комментарий