Название tar архива образовано от сочетания Tape ARchive, так как было разработано для записи последовательных данных на ленточные устройства. Также иногда встречается название tarball.
По умолчанию 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
.