По мере того как программное обеспечение становится более мощным, а медиа наполняется всё бо́льшим объёмом данных, размеры файлов продолжают расти с экспоненциальной скоростью. В результате становится все более распространённым хранение и отправка файлов в сжатых форматах, в том числе и .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 -xf yourarch.tar.gz yourdir2 yourfile3 yourdir33
Обратите внимание, что вышеприведённая команда выдаст ошибку, если в ней не будет указано точное имя файла или директории, соответствующее содержащимся в архиве.

Вы также можете извлечь .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-адрес или доменное имя веб-ресурса, на котором расположен искомый архив.

Утилита gzip
Для создания архивов .tar применяются разнообразные утилиты сжатия, в том числе и gzip. Данная утилита является одним из самых доступных и популярных вариантов для создания сжатых файлов. К тому же, она встроена в большинство дистрибутивов Linux и macOS.
Формат команды создания архива выглядит как:
$ gzip yourarch.tarА при помощи опции -d вы можете легко распаковать полученный файл .tar:
$ gzip -d yourarch.tarЕсли вы хотите сохранить исходный файл после сжатия, вам следует использовать параметр -c для вывода сжатого файла в другой с сохранением оригинала:
$ gzip -c yourarch.tar > newyourarch.tar.gz
Для того, чтобы упаковать каждый из файлов в директории, применяется опция -r. Например, следующая команда создаёт архивы всех файлов, находящихся внутри каталога yourdir, а также внутри всех вложенных директорий внутри него:
$ gzip -r yourdirСледующая команда, в свою очередь, производит декомпрессию всех файлов в директории yourdir, включая вложенные каталоги:
$ gzip -dr yourdir