В чем разница со всеми типами архивов .tar?

16

Может кто-нибудь сказать мне, что случилось с таким количеством архивов, и чем они отличаются?

Есть как минимум пять, о которых я могу думать, .tar.tz , .tar.gz, .tar.bz2, .tar.lz,.tar.z

Что лучше для каких приложений? Просто кажется глупым делать так много вариаций одного и того же файла, но я уверен, что есть причина.

Тревор Гросс
источник

Ответы:

18

.gz, .xz, .bz2, .7z, .lz, .zСуффиксы используются , чтобы сделать ясно , что файл сжат с указанным алгоритмом сжатия. Его использование не ограничено .tarфайлами, вы также увидите такие файлы, как initrd.gz(сжатый начальный виртуальный диск) или manual.txt.gz(для сжатого текстового документа). Вы также можете увидеть, file.tgzчто также указывает на сжатый gzip тарбол (например file.tar.gz).

Расширение файла является соглашением, оно не обязательно описывает содержимое файла. Чтобы проверить, какой тип файла вы обрабатываете, используйте fileкоманду. Пример:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

По моему опыту, файлы, сжатые gzip ( .gz), являются наиболее распространенными. Это быстрое сжатие и распаковка, хотя есть и другие алгоритмы, которые дают лучшие коэффициенты сжатия.

Lekensteyn
источник
8

В дополнение к ответу @Lekensteyn, я хотел бы добавить, что это поведение основано на философии « Делай одно и делай это хорошо» - tarпрограмма знает, как поместить несколько файлов в один поток (с .tarрасширением), gzipзнает, как сжать один файл (с добавлением .gzрасширения) *. Комбинируя эти инструменты, вы можете создать команду, которая сжимает несколько файлов в один.tag.gz файл.

Этот подход очень гибок - вы можете комбинировать несколько стандартных команд Unix для выполнения самых разных задач. Например, если вы пишете лучшую программу для сжатия файлов, вам не нужно изменять tarее, чтобы она могла создавать .tar.mymegazipфайлы - вместо этого вы просто передаете tarвыходные данные в ваш компрессор.

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

Сравните это с zipкомандой, которая не была создана в Unix - она ​​имеет встроенные инструменты для сжатия целых каталогов, шифрования файлов, разделения архива на более мелкие zip-файлы и т. Д.


(сноска) - да, tarон может сам gzip или bzip файлы, используя -zи -jпереключатели, они были добавлены для удобства, и GNU tar фактически создается gzipили bzip2как новый процесс.

Сергей
источник
Пример: команды tar c dir/ | gzip > dir.tar.gzи tar czf dir.tar.gz dir/команды делают то же самое. Пример , в котором tarсочетается с SSH и tar(снова): tar cz Documents/ | ssh user@host 'tar xz(Rsync будет эквивалентно: rsync -a Documents user@host:)
Lekensteyn