Tar на самом деле сжимает файлы или просто группирует их?

37

Я обычно предполагал, что это tarбыла утилита сжатия, но я не уверен, действительно ли она сжимает файлы, или это просто файл ISO, файл для хранения файлов?

Доктор
источник
Также на SuperUser .
allquixotic

Ответы:

49

Tar - это инструмент архивации (Tape ARchive), он собирает только файлы и их метаданные вместе и создает один файл. Если вы хотите сжать этот файл позже, вы можете использовать gzip / bzip2 / xz. Для удобства tar предоставляет аргументы для автоматического сжатия архива. Ознакомьтесь с man-страницей tar для более подробной информации.

0xAF
источник
9
Небольшое уточнение по ответу. Именно GNU tar предоставляет эти дополнительные аргументы сжатия. Например, tar Solaris не предоставляет аргументы для сжатия.
Теро Килканен
5
оооо, вот почему я продолжаю видетьthing.tar.7z
Mooing Duck
Tar BSD также предоставляет аргумент для сжатия, хотя он только принимает zи определяет метод сжатия на основе расширения, тогда как GNU tar имеет отдельные zZjJаргументы для различных методов сжатия.
wingedsubmariner
2
Просто прочитайте man-страницу BSD tar, и, как оказалось, я ошибся, BSD tar использует zZjJдля сжатия отдельный файл, как GNU tar. Тем не менее, он автоматически обнаруживает сжатие при распаковке, тогда как GNU tar ожидает и zZjJтогда.
wingedsubmariner
5
@wingedsubmariner: нет; современные версии GNU tarраспаковывают автоматически, не требуя -zZjJопций.
Джонатан Леффлер
17

tarпроизводит архивы; Сжатие - это отдельная функциональность. Однако tar одно это может уменьшить использование пространства при использовании большого количества небольших файлов, размер которых меньше размера кластера файловой системы. Если файловая система использует кластеры размером 1 КБ, даже файл, содержащий один байт, будет занимать 1 КБ (плюс индекс). tarАрхив не имеет эти накладные расходы.

Кстати, ISO-файл на самом деле не «файл для хранения файлов» - это фактически образ всей файловой системы (изначально предназначенной для использования на компакт-дисках), и, следовательно, его структура значительно сложнее.

Майкл Боргвардт
источник
3
На самом деле пустой файл не будет занимать 1 КБ. Будет 1-1023 байтовый файл.
psusi
@psusi, поэтому для файла байтов 1-1023 будет всегда потреблять 1024, что приводит к потере 1023-1 байта.
Шиплу Мокаддим
2

Исходная команда tar в UNIX не сжимала архивы. Как упоминалось в комментарии, Solaris tar не сжимается. Ни HP-UX, ни AIX, FWIW. По соглашению, несжатые архивы заканчиваются .tar.

С GNU / Linux вы получаете GNU tar. (Вы можете установить GNU tar в других системах UNIX.) По умолчанию он не сжимается; однако, он делает сжать полученный архив с помощью Gzip (также по GNU) , если вы поставляете -z. Обычный суффикс для сжатых файлов таков .gz, что вы часто будете видеть tarballs (сленг для архива tar, обычно подразумевающий, что он был сжат), заканчивающиеся на .tar.gz. Это окончание подразумевает, что tar был запущен, за ним следует gzip, например tar cf - .|gzip -9v > archive.tar.gz. Вы также найдете архивы заканчивая .tgz, например tar czf archive.tgz ..

Edit: www.linfo.org/tar.html напомнил мне, что GNU tar поддерживает гораздо больше функций, чем просто сжатие с помощью gzip, и напомнил мне, что суффиксы - это больше, чем простые соглашения. У них есть встроенная семантика. Он также поддерживает bzip2 ( -jдля .bz2) и старый компрессор ( -Zдля .Z). Затем я посмотрел на страницу руководства и мне напомнили, что -aавтоматически сопоставляет желаемый метод сжатия на основе суффикса.

Еще одна гнида Как говорится в справочной странице по tar для Linux, GNU создает информационные страницы, а не справочные страницы, поэтому, чтобы узнать все о GNU tar, запустите info tar.

tbc0
источник
Tar GNU по-прежнему не обрабатывает сжатия сам по себе, он просто передает данные в / из gzip, bzip2, compress и другие.
ott--
Я посмотрел на источник . GNU tar обрабатывает сжатие! Реализация использует преимущества повторного использования кода и разумных принципов архитектуры пространства пользователя UNIX. «Просто трубы» - это то, как сжатие тесно интегрировано в инструмент. Тот факт, что это происходит с программами-помощниками форка, является технической. Если вы хотите защитить «просто каналы», приведите имена файлов и номера строк, и давайте посмотрим, какую сторону сообщество принимает.
tbc0
Требуется несколько дней, прежде чем я смогу проверить этот источник.
ott--
1

Утилита tar не сжимает, пока вы не укажете аргумент [имя файла tar -z].

AJ
источник