По мере того как программное обеспечение становится более мощным, а медиа наполняется всё бо́льшим объёмом данных, размеры файлов продолжают расти с экспоненциальной скоростью. В результате становится все более распространённым хранение и отправка файлов в сжатых форматах, в том числе и .tar.gz.
Однако сжатие и извлечение этих файлов не всегда интуитивно. В этом руководстве мы предоставим основные инструкции по распаковке файлов .tar.gz в Linux-системах.
Что такое файлы .tar и .tar.gz?
Файл .tar
– это собрание файлов, сжатых в один файл или архив. Сокращённое от “Tape ARchive” (архив ленты) название “TAR” связано со временем, когда файлы хранились на магнитных ленточных накопителях.
К счастью, для использования и извлечения файлов .tar
вам не нужно быть компьютерным техником 1960-х годов, и современные архивы .tar
вообще не имеют никакого отношения к старым компьютерам.
Точно так же, как и более знакомые всем архивы .zip
, файлы .tar
сжимают большие файлы в один пакет, что упрощает их хранение, отправку или перемещение. В результате это стало довольно распространённым расширением файлов как для пакетов программного обеспечения, так и для многих других ресурсов.
В отличие от .zip
у .tar
есть несколько дополнительных функций, которые делают его лучшим форматом сжатия для определённых файлов и приложений. Основное отличие состоит в том, что архив .zip
состоит из множества индивидуально сжатых файлов, в то время как архив .tar
сжат как один пакет при том, что заархивированные файлы остаются несжатыми. Другими словами, файл .zip
представляет собой коллекцию сжатых файлов, а файл .tar
– сжатую коллекцию файлов.
Что касается формата .tar.gz
, то это – файл .tar
, который был сжат или “запакован” с помощью утилиты gzip
. Именно её использование для сжатия является причиной добавления двойного расширения к файлу – .gz
.
Хотя gzip
и является наиболее распространённой утилитой для уменьшения объёма архивов, это не единственный вариант. Как вы можете предположить, использование другой утилиты сжатия для файла .tar
приведёт к другому двойному расширению – .tar.br
(Brotli
), .tar.bz2
(bzip2
), .tar.zst
(zstd
) и так далее.
Разные утилиты сжатия могут требовать разных методов для извлечения и распаковки файлов. В данном случае мы сосредоточимся на файлах .tar.gz
.
Работа с архивами .tar.gz
Для распаковки файлов .tar.gz
в Linux-системах применяется утилита tar
. Команда для извлечения содержимого архива выглядит следующим образом:
$ tar -xvf yourarch.tar.gz
Данная команда извлекает (-x
) указанный архивный файл (-f
) (в данном случае yourarch.tar.gz
) в текущую директорию. Таким же образом утилита tar
работает с архивами, упакованными при помощи других форматов сжатия, например, .tar.bz2
. Опция -v
не является обязательной и позволяет выводить информацию о процессе и в данной команде выводит извлекаемые из архива файлы в окно терминала.
Чтобы извлечь файлы не в текущий каталог, а какую-либо другую директорию, следует применять опцию -C
. Вот так, например, выглядит команда для разархивирования содержимого yourarch.tar.gz
в директорию /tmp/yourdir
:
$ tar -xf yourarch.tar.gz -C /tmp/yourdir
Часто бывает полезно перечислить содержимое файла .tar.gz
без непосредственно распаковки архива. В такие моменты пригодится опция -t
, которая выведет список имён файлов, содержащихся в архиве. Например:
$ tar -tf yourarch.tar.gz
![Просмотр содержимого tar-архива - Как извлекать и разархивировать файлы .tar.gz](https://ruvds.com/wp-content/uploads/2023/11/1-7.png)
Если вам нужно распаковать не весь архив, а лишь извлечь некоторые его элементы (файлы или каталоги), просто перечислите их, разделяя пробелами:
$ tar -xf yourarch.tar.gz yourdir2 yourfile3 yourdir33
![Извлечение из tar-архива выборочных файлов и каталогов](https://ruvds.com/wp-content/uploads/2023/11/1-10.png)
Обратите внимание, что вышеприведённая команда выдаст ошибку, если в ней не будет указано точное имя файла или директории, соответствующее содержащимся в архиве.
![Ошибка при не правильном указании имени файла и каталога при выборочном извлечении](https://ruvds.com/wp-content/uploads/2023/11/1-11.png)
Вы также можете извлечь .tar.gz
непосредственно из стандартного входного потока stdin
, передав его утилите tar
. При этом в самой утилите необходимо использовать параметр распаковки -z
. Например, следующая команда извлечёт содержимое архива, расположенного по адресу http://X.X.X.X/yourarch.tar.gz
, где используется команда wget
, которая передаётся утилите tar
:
$ wget -c http://X.X.X.X/yourarch.tar.gz -O - | sudo tar -xz
В данном случае X.X.X.X
– это IP-адрес или доменное имя веб-ресурса, на котором расположен искомый архив.
![Пример передачи стандартного входного потока утилите tar при распаковке архива, расположенного удалённо](https://ruvds.com/wp-content/uploads/2023/11/1-8.png)
Утилита gzip
Для создания архивов .tar
применяются разнообразные утилиты сжатия, в том числе и gzip
. Данная утилита является одним из самых доступных и популярных вариантов для создания сжатых файлов. К тому же, она встроена в большинство дистрибутивов Linux и macOS.
Формат команды создания архива выглядит как:
$ gzip yourarch.tar
А при помощи опции -d
вы можете легко распаковать полученный файл .tar
:
$ gzip -d yourarch.tar
Если вы хотите сохранить исходный файл после сжатия, вам следует использовать параметр -c
для вывода сжатого файла в другой с сохранением оригинала:
$ gzip -c yourarch.tar > newyourarch.tar.gz
![Сжатие архива с сохранением оригинального файла - Как извлекать и разархивировать файлы .tar.gz](https://ruvds.com/wp-content/uploads/2023/11/1-9.png)
Для того, чтобы упаковать каждый из файлов в директории, применяется опция -r
. Например, следующая команда создаёт архивы всех файлов, находящихся внутри каталога yourdir
, а также внутри всех вложенных директорий внутри него:
$ gzip -r yourdir
Следующая команда, в свою очередь, производит декомпрессию всех файлов в директории yourdir
, включая вложенные каталоги:
$ gzip -dr yourdir