Tar

tar — утилита для сбора множества файлов в один архивный файл, часто называемый tarball, для распространения или резервного копирования. Название происходит от «tape archive» (ленточный архив), поскольку изначально он был разработан для записи данных на последовательные устройства ввода-вывода, не имеющие собственной файловой системы, такие как устройства, использующие магнитную ленту. Архивные наборы данных, созданные tar, содержат различные параметры файловой системы, такие как имя, временные метки, владелец, права доступа к файлам и структура каталогов. POSIX отказался от tar в пользу pax, но tar по-прежнему широко используется.

Что важно знать
tar
Расширение .tar
MIME-тип application/x-tar
Сигнатура u s t a r \0 0 0 на байте 257 ("ustar", нулевой байт, два '0', 8 байтов в сумме)
Разработчик Bell Labs
Опубликован январь 1979; 47 лет назад (1979-01)
Последний выпуск 1.35 (18 июля 2023; 2 года назад (2023-07-18))
Тип формата архиватор
Содержится в gzip, bzip2, lzip, lzma, xz, lzop, compress, Zstandard
Открытый формат? да

Примечание

Из-за достаточно поздней стандартизации существует несколько похожих, но не до конца совместимых форматов. В частности, различие между GNU tar и SUN Solaris tar наблюдается при длине имени файла, включаемого в архив, более 100 символов или размере включаемого в архив файла более 8 ГБ.

Расширения имён файлов

Для файлов, содержащих архивы tar, традиционно применяется расширение имени файла .tar. В случае дополнительного сжатия другими программами применяются следующие расширения:

  • gzip: .tar.gz, .tgz (в случае ограничений файловой системы на длину расширения), .tar.gzip
  • bzip2: .tar.bz2, .tar.bzip2, .tbz2, .tb2, .tbz
  • compress: .tar.Z, .taz
  • LZMA: .tar.lzma
  • XZ: .tar.xz, .txz, .tbJ[1]
  • lzop: .tar.lzo, .tzo
  • lzip: .tar.lz, .tlz
  • Zstandard: .tar.zst, .tzst
  • Brotli: .tar.br

Синтаксис

tar [-опции] <имя архива tar> [файлы или папки, которые необходимо поместить в архив при сжатии]

Основные опции:

  • -c, --create — создать архив;
  • -a, --auto-compress — дополнительно сжать архив с компрессором который автоматически определить по расширению архива. Если имя архива заканчивается на *.tar.gz то с помощью GZip, если *.tar.xz то с помощью XZ, *.tar.zst для Zstandard и.т.п;
  • -r, --append — добавить файлы в конец существующего архива;
  • -x, --extract, --get — извлечь файлы из архива;
  • -f, --file — указать имя архива;
  • -t, --list — отобразить список файлов и папок в архиве;
  • -v, --verbose — выводить список обработанных файлов.

Примеры

Создание архива archive.tar из файла README.txt и каталога src:

tar -cvf archive.tar README.txt src

Извлечение содержимого archive.tar в текущий каталог:

tar -xvf archive.tar

Создание архива archive.tar.gz из файла README.txt и каталога src и сжатие его с помощью gzip :

tar -cavf archive.tar.gz README.txt src

Извлечение содержимого archive.tar.gz в текущий каталог:

tar -xvf archive.tar.gz

Tarpipe

Tarpipe — процесс создания tar-архива в stdout и последующего извлечения содержания архива в другом каталоге из stdin. Это очень удобный метод копирования содержания одной файловой системы в другую, так как происходит полное копирование, включая атрибуты файлов, символические ссылки, файлы устройств.

tar -C "каталог_источника" -cf - . | tar -C "каталог_назначения" -xvf -
Tar over SSH
tar -C каталог_источника -czpvf - . | ssh user@host "cat > каталог_назначения/backup.tgz"
Tar & 7-zip

Чтобы сделать резервную копию каталога:

tar cf - directory | 7za a -si directory.tar.7z

Чтобы восстановить из резервной копии:

7za x -so directory.tar.7z | tar xf -

Примечания

Ссылки