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