Почему люди используют tarballs?

Как в основном разработчик Windows, возможно, я пропускаю что-то культурное в сообществе Linux, но он всегда путал меня при загрузке того, что файлы сначала помещаются в архив .tar, а затем застегиваются. Почему двухэтапный процесс? Не зажимает ли поиск группировки файлов? Есть ли другие преимущества, о которых я не знаю?

Ответ 1

bzip и gzip работают с одиночными файлами, а не с группами файлов. Обычные старые zip (и pkzip) работают с группами файлов и имеют концепцию встроенного архива.

Философия * nix - это один из небольших инструментов, которые очень хорошо выполняют конкретные задания и могут быть соединены вместе. Вот почему здесь есть два инструмента, которые имеют конкретные задачи, и они разработаны, чтобы хорошо сочетаться. Это также означает, что вы можете использовать tar для группировки файлов, а затем у вас есть выбор инструмента сжатия (bzip, gzip и т.д.).

Ответ 2

Не странно, что никто не упомянул, что современные версии GNU tar позволяют вам сжимать, когда вы объединяете:

tar -czf output.tar.gz directory1 ...

tar -cjf output.tar.bz2 directory2 ...

Вы также можете использовать выбранный вами компрессор, если он поддерживает опции < -c '(для вывода stdout или из stdin) и' -d (распаковать):

tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...

Это позволит вам указать любой альтернативный компрессор.

[Добавлено: если вы извлекаете из gzip или bzip2 сжатых файлов, GNU tar автоматически обнаруживает их и запускает соответствующую программу. То есть вы можете использовать:

tar -xf output.tar.gz
tar -xf output.tgz        # A synonym for the .tar.gz extension
tar -xf output.tar.bz2

и они будут обработаны должным образом. Если вы используете нестандартный компрессор, вам нужно указать, что при извлечении.]

Причиной разделения является, как и в выбранном ответе, разделение обязанностей. Помимо всего прочего, это означает, что люди могут использовать программу "cpio" для упаковки файлов (вместо tar), а затем использовать выбранный компрессор (один раз за время, предпочтительный компрессор был pack, позже он был compress (который был намного эффективнее, чем pack), а затем gzip, который управлял кольцами вокруг обоих своих предшественников и полностью конкурировал с zip (который был перенесен в Unix, но не является родным там), а теперь bzip2, который, по моему опыту, обычно имеет преимущество 10-20% над gzip.

[Добавлено: кто-то заметил в своем ответе, что cpio имеет забавные соглашения. Это правда, но до тех пор, пока GNU tar не получит соответствующие параметры ('-T -'), cpio была лучшей командой, когда вы не захотели архивировать все, что было под данным каталогом, - вы могли бы выбрать именно то, что файлы были заархивированы. Недостатком cpio было то, что вы не только могли выбирать файлы - вам приходилось выбирать их. Там еще одно место, где cpio забивает; он может делать копию in-situ из одной иерархии каталогов в другую без промежуточного хранилища:

cd /old/location; find . -depth -print | cpio -pvdumB /new/place

Кстати, опция <-depth 'на find важна в этом контексте - она ​​копирует содержимое каталогов перед установкой разрешений на сами каталоги. Когда я проверил команду перед вводом дополнения к этому ответу, я скопировал несколько каталогов только для чтения (разрешение 555); когда я пошел, чтобы удалить копию, мне пришлось отключить права на каталоги до того, как "rm -fr /new/place" может закончить. Без опции -depth команда cpio не удалась. Я только вспомнил об этом, когда пошел на уборку - приведенная мной формула является автоматической для меня (главным образом, благодаря многократным повторениям на протяжении многих лет). ]

Ответ 3

Важным отличием является природа двух видов архивов.

Файлы TAR представляют собой нечто большее, чем конкатенация содержимого файла с некоторыми заголовками, тогда как gzip и bzip2 являются потоковыми компрессорами, которые в tarballs применяются ко всей конкатенации.

ZIP файлы представляют собой конкатенацию отдельных сжатых файлов с некоторыми заголовками. Фактически, алгоритм DEFLATE используется как zip, так и gzip, и с соответствующей бинарной настройкой вы можете взять полезную нагрузку потока gzip и поместить его в zip файл с соответствующими заголовками и записями в словаре.

Это означает, что два разных типа архива имеют разные компромиссы. Для больших коллекций небольших файлов TAR, за которыми следует поточный компрессор, обычно приводит к более высокой степени сжатия, чем ZIP, потому что потоковый компрессор будет иметь больше данных для создания своих частот словаря и, таким образом, сможет выдавать более избыточную информацию. С другой стороны, ошибка (сохраняющая длину файла) в ZIP файле приведет к повреждению только тех файлов, чьи сжатые данные были затронуты. Как правило, поточные компрессоры не могут осмысленно восстанавливаться из ошибок среднего потока. Таким образом, файлы ZIP более устойчивы к коррупции, так как часть архива по-прежнему будет доступна.

Ответ 4

Самое забавное: вы можете получить поведение, не ожидаемое создателями tar и gzip. Например, вы можете не только gzip tar файл, но также tar tar файлы, чтобы создать files.gz.tar (это будет технически ближе к тому, как работает pkzip). Или вы можете поместить другую программу в конвейер, например, некоторую криптографию, и вы можете выбрать произвольный порядок tarring, gzipping и encrypting. Тот, кто написал криптографическую программу, не должен иметь ни малейшего представления о том, как его программа будет использоваться, все, что ему нужно сделать, это читать со стандартного ввода и записывать в стандартный вывод.

Ответ 5

В мире Unix большинство приложений предназначены для того, чтобы сделать что-то одно, и делать это хорошо. Самые популярные утилиты zip в Unix, gzip и bzip2, только для сжатия файлов. tar выполняет конкатенацию файла. Проводка вывода tar в утилиту сжатия делает то, что необходимо, без добавления чрезмерной сложности для любой части программного обеспечения.

Ответ 6

Еще одна причина, по которой это так распространено, заключается в том, что tar и gzip находятся почти на всей базе установки * NIX. Я считаю, что это, пожалуй, самая большая причина. Именно поэтому zip файлы чрезвычайно распространены в Windows, потому что поддержка встроена, независимо от превосходных процедур в RAR или 7z.

GNU tar также позволяет создавать/извлекать эти файлы из одной команды (один шаг):

  • Создать архив:
  • tar -cfvj destination.tar.bz2 *.files
  • tar -cfvz destination.tar.gz *.files

  • Извлечь архив: (часть -C является необязательной, по умолчанию используется текущий каталог)

  • tar -xfvj archive.tar.bz2 -C destination_path
  • tar -xfvz archive.tar.gz -C destination_path

Это то, что я посвятил памяти из своих многолетних лет на Linux, а недавно на Nexenta (OpenSolaris).

Ответ 7

Я думаю, вы искали для этого более исторический контекст. Оригинальный почтовый индекс был для одного файла. Тар используется для размещения нескольких файлов в один файл. Поэтому tarring и zipping - это двухэтапный процесс. Почему он до сих пор так доминирует сегодня, все догадываются.

Из wikipedia для Tar_ (file_format)

При вычислении tar (полученный из ленточного архива) является как файловым форматом (в виде типа битового потока архива), так и именем программы, используемой для обработки таких файлов. Формат был стандартизован POSIX.1-1988, а затем POSIX.1-2001. Первоначально разработанный как необработанный формат, используемый для резервного копирования на магнитной ленте и других устройств последовательного доступа для целей резервного копирования, теперь он обычно используется для сопоставления коллекций файлов в один более крупный файл для распространения или архивирования при сохранении информации о файловой системе, такой как пользователь и группа разрешений, дат и структур каталогов.

Ответ 8

tar популярен в основном по историческим причинам. Доступно несколько альтернатив. Некоторые из них находятся примерно столько же, сколько смола, но не могут превзойти популярность смолы по нескольким причинам.

  • cpio (инопланетный синтаксис, теоретически более последовательный, но люди любят то, что они знают, дегустация преобладает)
  • ar (популярный давным-давно, теперь используемый для упаковки файлов библиотеки)
  • shar (самораспаковывающиеся скрипты оболочки, имели всевозможные проблемы, пользовались популярностью, тем не менее)
  • zip (из-за проблем с лицензированием он не был доступен для многих Unices)

Основным преимуществом (и недостатком) tar является то, что он не имеет ни заголовка файла, ни центрального каталога содержимого. В течение многих лет он никогда не страдал от ограничений в размере файла (до этого десятилетия, когда ограничение на 8 Гб на файлы внутри архива стало проблемой, решена много лет назад).

В первую очередь, один из недостатков tar.gz(или ar.Z, если на то пошло), который заключается в том, что вам нужно распаковать весь архив для извлечения отдельных файлов и распечатки содержимого архива, никогда не повредить людям, чтобы они не попали в дегте в значительных количествах.

Ответ 9

tar - это UNIX, поскольку UNIX - tar

По-моему, причина еще с использованием tar сегодня заключается в том, что это один из (возможно, редких) случаев, когда подход UNIX просто сделал это совершенно правильно с самого начала.

Внимательно изучая этапы создания архивов, я надеюсь, вы согласитесь, что способ разделения различных задач здесь - философия UNIX:

  • один инструмент (tar, чтобы дать ему имя здесь), специализирующийся на преобразовании любого выбора файлов, каталогов и символических ссылок, включая all данные, такие как метки времени, владельцы и разрешения в один поток байтов.

  • и просто другой произвольно взаимозаменяемый инструмент (gzip bz2 xz, чтобы назвать только несколько опций), который преобразует поток любого потока байтов в другой (надеюсь) меньший результат поток.

Используя такой подход, вы получаете целый ряд преимуществ как для пользователя, так и для разработчика:

  • расширяемость Предоставление пары tar с любым алгоритмом сжатия уже существующего или любым алгоритмом сжатия еще предстоит разработать без, чтобы что-либо изменить на внутренней работы tar вообще.

    Как только вы получите новый инструмент "hyper-zip-utra" или "whater compression", вы уже готовы использовать его, обнимая вашего нового слугу всей мощностью tar.

  • стабильность tar был в тяжелом использовании с начала 80-х годов и был запущен на числовых операционных систем и машин.

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

  • Консистенция Пользовательский интерфейс остается неизменным все время.

    Нет необходимости помнить, что для восстановления разрешений с помощью инструмента A вам нужно передать опцию --i-hope-you-rember-this-one, а с помощью инструмента B вы должны использовать --this-time-its-another-one при использовании инструмента C it `--hope-you-didnt-try- с инстр-в-переключателя.

    В то время как при использовании инструмента D вы бы действительно испортили его, если не использовали --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now.

Ответ 10

gzip и bzip2 - просто компрессор, а не архиватор-программное обеспечение. Следовательно, комбинация. Вам понадобится программное обеспечение tar для объединения всех файлов.

ZIP, а RAR - комбинация двух процессов.

Ответ 11

Обычно в мире * nux пакеты файлов распространяются как tarballs, а затем опционально gzipped. Gzip - это простая программа сжатия файлов, которая не выполняет связывание файлов с этим tar или zip.

В одно время zip неправильно обрабатывал некоторые вещи, которые считали нормальными файловые системы Unix tar и unix, такие как символические ссылки, файлы смешанных файлов и т.д. Я не знаю, изменилось ли это, но почему мы используем деготь.

Ответ 12

Tar = файлы групп в 1 файле

GZip = Закрепить файл

Они разбивают процесс на 2. Это он.

В среде Windows вы можете использовать WinZip или WinRar, которые делают Zip. Процесс Zip этого программного обеспечения группирует файл и застегивает его, но вы просто не видите этот процесс.

Ответ 13

По той же причине, почему пользователи Mac любят образы дисков: они - действительно удобный способ архивирования материала, а затем передавать его, загружать или загружать или отправлять по электронной почте и т.д.

И проще в использовании и более портативном, чем ZIP файлы IMHO.

Ответ 14

В мои дни Altos-XENIX (1982) мы начали использовать tar (ленточный архиватор) для извлечения файлов с 5 1/4 дискет или потоковой ленты, а также копирования на эти носители. Эта функциональность очень похожа на команды BACKUP.EXE и RESTORE.EXE в DOS 5.0 и 6.22 в качестве дополнений, позволяя вам охватывать несколько носителей, если она не может вписаться только в одну. Недостатком было то, что если у одного из нескольких носителей были проблемы, все это было бесполезно. tar и dd происходят из UNIX SYstem III и остаются стандартной утилитой выпуска с UNIX-подобной ОС, возможно, для соображений обратной совместимости.

Ответ 15

Tar - это не только формат файла, но и формат ленты. Ленты хранят данные поэтапно. Каждая реализация хранилища была обычной. Тар был методом, с помощью которого вы могли извлекать данные с диска и хранить его на ленте таким образом, чтобы другие люди могли получить его без вашей специальной программы.

Позже появились программы сжатия, и * nix все еще имел только один способ создания одного файла, содержащего несколько файлов.

Я считаю, что это просто инерция, которая продолжилась с трендом tar.gz. Pkzip начинался с сжатия и архивации одним махом, но тогда DOS-системы обычно не подключались к ленточным накопителям!

Из википедии для Tar_ (file_format)

При вычислении tar (полученный из ленточного архива) является как файловым форматом (в виде типа битового потока архива), так и именем программы, используемой для обработки таких файлов. Формат был стандартизован POSIX.1-1988, а затем POSIX.1-2001. Первоначально разработанный как необработанный формат, используемый для резервного копирования на магнитной ленте и других устройств последовательного доступа для целей резервного копирования, теперь он обычно используется для сопоставления коллекций файлов в один более крупный файл для распространения или архивирования при сохранении информации о файловой системе, такой как пользователь и группа разрешений, дат и структур каталогов.