Название tar архива образовано от сочетания Tape ARchive, так как было разработано для записи последовательных данных на ленточные устройства. Также иногда встречается название tarball.

15 примеров команды tar для сисадминов и девопсов
По умолчанию tar
архивирует файлы только без сжатия, но с использованием некоторых частей. Мы можем использовать различные методы сжатия, чтобы на выходе получить архив меньшего размера. Утилита tar
обычно включается в большинство дистрибутивов Linux по умолчанию, а сам формат поддерживается другими операционными системами, включая Windows и macOS, с помощью различных инструментов и утилит.
В этой статье мы рассмотрим некоторые общие примеры использования команды tar
и поддерживаемые флаги.
1. Создание tar архива
Для создания обычного архива без сжатия достаточно ввести команду ниже:
$ tar cvf <tar-file-name> <files-to-archive>
Здесь флаги c обозначает создание, v
обозначает подробный вывод и f
обозначает имя файла архива tar
. По соглашению укажите имя файла tar
с расширением .tar
. Архивируемые файлы могут быть определены с помощью подстановочных знаков или же можно указать один файл или несколько файлов/путей.
В качестве примера можно привести три файла в каталоге:

Создать архив, содержащий все три файла, можно следующим образом:

Также можно указать только конкретные файлы для архивирования, например:

2. Создание сжатого архива (GZ)
tar
позволяет не только архивировать файлы, но и сжимать их для экономии места. Одним из популярных форматов сжатия является gunzip
, обычно представленный расширением .gz
после .tar
или как tgz
. Мы можем использовать флаг z
, чтобы указать, что файлы должны быть сжаты с помощью gunzip
. Вот пример:

Можно заметить, что размер архивных файлов существенно отличается, хотя оба содержат одни и те же три файла. Это связано с использованием сжатия с использованием флага z
.
3. Создание сжатого архива (BZ)
tar
поддерживает несколько других форматов сжатия. Одним из них является bz2
или bzip2
, который представлен расширением tar.bz2
или иногда как tbz2
. Это может дать вам меньший размер архива, но, в свою очередь, потребляет больше ЦП, так что процесс сжатия/декомпрессии может быть медленнее, чем gz
архив. Для создания bz
архива используется флаг j
:

4. Распаковка всех файлов
Архив tar
(сжатый или несжатый) можно извлечь с помощью опции x
. Ниже приведены примеры, поясняющие его использование:

Эта команда также работает для сжатого архива формата gz
:

И даже для архива со сжатием bz2
:

5. Просмотр содержания архива
Чтобы перечислить содержимое архива tar
, можно использовать флаг t
, как показано ниже:

6. Распаковка конкретных файлов
Из архива tar
, tar.gz
или tar.bz2
можно извлечь как все файлы, так и один конкретный файл, указав имя файла:

Аналогично, можно указать несколько имен файлов, разделенных пробелом, чтобы извлечь их вместе за один переход.

7. Распаковка с помощью маски
Чтобы извлечь один или несколько файлов с помощью шаблона PATTERN
, используйте флаг --wildcards
:

8. Добавление файлов в архив
В существующий несжатый архив можно добавлять новые файлы используя флаг r
или --append
с новыми именами файлов или шаблоном подстановочных символов (помните, что это работает только с несжатыми TAR-файлами, а не со сжатыми форматами tar.gz
или tar.bz2
):

Можно увидеть, что содержимое списка archive.tar
показывает два только что добавленных файла.
9. Удаление файлов из архива
Удаление определенных файлов из архива tar
возможно с помощью флага --delete
, как показано ниже (сравните список tar
до и после удаления файлов):

Опять же это работает только для несжатых архивов и завершится неудачей для сжатых форматов архива.
10. Создание архива с проверкой
При создании несжатых архивных файлов можно проверить содержимое архива, используя флаг W
как показано ниже:

Этот флаг нельзя использовать с флагами сжатия, хотя можно сжать созданный файл tar
позже с помощью gzip
или других инструментов.
11. Распаковка архива в папку
Если вы хотите извлечь содержимое тарбола в определенную папку вместо текущего каталога, используйте флаг -C
с указанием пути к каталогу, как показано ниже:

12. Использование флага –diff
Можно использовать флаг --diff
или d
для поиска любых изменений между файлами в архиве tar
и файлами в файловой системе. Вот пример, который запускает diff
один раз, когда файл внутри архива и снаружи был один и тот же. Если запустить команду снова после обновления файла, то можно увидеть разницу в выходных данных.

13. Исключение файлов
Исключение определенных файлов может быть обязательным при создании архивов tar
. Этого можно достичь с помощью флага --exclude
.

Как можно заметить из приведенных выше выходных данных, можно задать флаг --exclude
несколько раз, чтобы указать несколько имен файлов или шаблонов связывая их логическим AND
. Следует отметить, что из шести файлов в директории в приведенном выше примере только два файла удовлетворяли условию, которое должно быть включено в archive.tar.gz
.
14. Просмотр размера содержимого архива
Размер содержимого сжатого архива tar
можно получить с помощью следующей команды:

Аналогично для архива bz2
:

15. Архивация с сохранением разрешений
По умолчанию команда tar
сохраняет разрешение архивированных файлов и каталогов, хотя можно явно указать его с помощью флага -p
или --preserve-permissions
, как показано ниже.

Заключение
tar
- полезная утилита в системах Unix/Linux в течение долгого времени и в первую очередь использовалась в задачах архивирования и резервного копирования. С течением времени утилита развивалась и приобретала многие опции. Он может использоваться для простых и сложных задач, если вы знаете, какие функции он предлагает. В этой статье описаны некоторые основные операции, которые можно выполнить с помощью команды tar
, и показано, как она может помочь в выполнении повседневных задач системного администрирования.
Для получения дополнительных сведений обратитесь воспользуйтесь встроенным руководством Linux с помощью команда man tar
или используйте команду tar --help
или tar --usage
.