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

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

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

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

16
задан 27 November 2013 в 22:41

2 ответа

Суффиксы .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), являются наиболее распространенными. Он быстро сжимает и распаковывает, хотя есть и другие алгоритмы, которые дают лучшие коэффициенты сжатия.

0
ответ дан 27 November 2013 в 22:41

В дополнение к ответу @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 как новый процесс.

0
ответ дан 27 November 2013 в 22:41

Другие вопросы по тегам:

Похожие вопросы: