Я знаю, что это tar
было сделано для ленточных архивов, но сегодня у нас есть форматы архивных файлов, которые объединяют файлы и выполняют сжатие в одном и том же логическом формате.
Вопросов:
Существует ли снижение производительности на этапах агрегации / сжатия / декомпрессии за использование
tar
инкапсулированного вgzip
илиbzip2
, по сравнению с использованием формата файла, который выполняет агрегацию и сжатие в одной и той же структуре данных? Предположим, что время работы сравниваемого компрессора одинаково (например, gzip и Deflate похожи).Есть ли особенности в
tar
файловом формате , что и другие форматы файлов, такие как.7z
и.zip
не имеют?Так как
tar
это такой старый формат файла и новые форматы файлов существуют сегодня, почемуtar
(будь то воплощен вgzip
,bzip2
или даже новыйxz
) до сих пор так широко используется сегодня на GNU / Linux, Android, BSD и других подобных UNIX операционных систем, для файла переводы, исходный код программы и бинарные загрузки, а иногда даже в формате менеджера пакетов?
tar xvzf
7z -x
tar xvzf
, несжатые данные не записываются на жесткий диск в.tar
формате! Вы правы в том, что если вы запуститеgunzip blah.tar.gz
и затемtar xf blah.tar
, он дважды запишет данные на диск (один раз как .tar, а затем как файлы в файловой системе), но на самом деле никто так не делает. Вtar xzf
использует UNIX труб ( в основном копии памяти) для передачи несжатых данныхgzip
(или любой другой компрессор) , чтобыtar
, таким образом , данные не записываются на диск в.tar
формате.tar
(особенно сжатый) ведет себя ужасно, когда дело доходит до повреждения данных. Небольшая избыточность / восстановление данных, добавленных современными форматами, стоит золотаОтветы:
Часть 1: Производительность
Вот сравнение двух отдельных рабочих процессов и того, что они делают.
У вас есть файл на диске,
blah.tar.gz
который, скажем, 1 ГБ сжатых gzip данных, который, в несжатом виде, занимает 2 ГБ (таким образом, степень сжатия составляет 50%).То, как вы могли бы создать это, если бы вы делали архивирование и сжатие отдельно, было бы:
Это приведет
blah.tar
к простой агрегацииfiles ...
в несжатом виде.Тогда вы бы сделали
Это будет считывать содержимое
blah.tar
с диска, сжимать их с помощью алгоритма сжатия gzip, записывать содержимоеblah.tar.gz
, а затем отсоединять (удалять) файлblah.tar
.Теперь давайте распакуем!
Способ 1
У вас
blah.tar.gz
так или иначе.Вы решили запустить:
Это будет
blah.tar.gz
.gzip
декомпрессор в памяти.blah.tar
на диске и повторяйте, пока все сжатые данные не будут прочитаны.blah.tar.gz
.Теперь у вас есть
blah.tar
диск, который распакован, но содержит один или несколько файлов, с очень низкими издержками на структуру данных. Размер файла, вероятно, на пару байтов больше, чем сумма всех данных файла.Ты бежишь:
Это будет
blah.tar
и вtar
структурах данных Формат файла, включая информацию о правах доступа к файлам, имена файлов, каталогов и т.д.Общие данные, которые мы ЧИТАЕМ с диска в этом процессе, составили 1 ГБ (для gunzip) + 2 ГБ (для tar) = 3 ГБ.
Общее количество данных, которые мы записали на диск в этом процессе, составило 2 ГБ (для gunzip) + 2 ГБ (для tar) + несколько байтов для метаданных = около 4 ГБ.
Способ 2
У вас
blah.tar.gz
так или иначе.Вы решили запустить:
Это будет
blah.tar.gz
, блок за раз, в память.gzip
декомпрессор в памяти.tar
формата файла парсер, который будет считывать информацию о метаданных и т.д. , а также данные несжатых файлов.tar
анализаторе файлов, он запишет несжатые данные на диск, создавая файлы и каталоги и заполняя их несжатым содержимым.Общее количество данных, которые мы ПРОЧИТАЛИ с диска в этом процессе, составило 1 ГБ сжатых данных, точка.
Общее количество данных, которые мы записали на диск в этом процессе, составило 2 ГБ несжатых данных + несколько байтов для метаданных = около 2 ГБ.
Если вы заметили, объем дискового ввода - вывода в / Путь 2 является идентичным диску I / O в исполнении, скажем,
Zip
или 7-Zip программ, корректировки любых различий в степени сжатия.И если вам важна степень сжатия, используйте
Xz
компрессор для инкапсуляцииtar
, и у вас есть архив TAR с LZMA2 , который столь же эффективен, как и самый продвинутый алгоритм, доступный для 7-Zip :-)Часть 2: Особенности
tar
хранит разрешения Unix в своих метаданных файла и хорошо известна и проверена на предмет успешной упаковки каталога со всеми видами различных разрешений, символических ссылок и т. д. Существует более нескольких случаев, когда может понадобиться скопировать кучу файлов в один файл или поток, но не обязательно сжимать его (хотя сжатие полезно и часто используется).Часть 3: Совместимость
Многие инструменты распространяются в исходном или двоичном виде как .tar.gz или .tar.bz2, потому что это формат файла с «наименьшим общим знаменателем»: так же, как большинство пользователей Windows имеют доступ к распаковщикам .zip или .rar, большинство установок Linux Даже самые простые будут иметь доступ по крайней мере к гудрону и смоле, независимо от того, сколько лет или урезаны. Даже прошивки Android имеют доступ к этим инструментам.
Новые проекты, ориентированные на аудиторию, использующую современные дистрибутивы, могут очень хорошо распространяться в более современном формате, например .tar.xz (с использованием формата сжатия Xz (LZMA), который сжимает лучше, чем gzip или bzip2), или .7z, что аналогично форматы файлов ZIP или RAR , в которых он сжимает и задает макет для инкапсуляции нескольких файлов в один файл.
Вы не видите, чтобы .7z использовался чаще по той же причине, по которой музыка не продается в онлайн-магазинах загрузки в совершенно новых форматах, таких как Opus , или видео в WebM . Совместимость с людьми, использующими древние или очень простые системы.
источник
tar
вписывается в экосистему архивирования (т. Е. Объединяет файлы вместе, обеспечивая повышение производительности и некоторые другие преимущества, такие как сохранение разрешений), но не объясняет, почему современные альтернативы, такие какdar
не используются на месте. Другими словами, этот ответ оправдывает использование файловых агрегаторов, но не самогоtar
программного обеспечения.На это ответили на переполнение стека .
Многие инструменты распространяются в исходном или двоичном виде как .tar.gz или .tar.bz2, потому что это формат файла с «наименьшим общим знаменателем»: так же, как большинство пользователей Windows имеют доступ к распаковщикам .zip или .rar, большинство установок Linux Даже самые простые будут иметь доступ по крайней мере
tar
иgunzip
независимо от того, сколько лет или урезаны. Даже прошивки Android имеют доступ к этим инструментам.Новые проекты, ориентированные на аудиторию, использующую современные дистрибутивы, могут очень хорошо распространяться в более современном формате, например
.tar.xz
(с использованием формата сжатия Xz ( LZMA ), который сжимает лучше, чем gzip или bzip2), или .7z, который похож на ZIP или RAR форматы файлов в том смысле, что он сжимает и задает макет для инкапсуляции нескольких файлов в один файл.Вы не видите, чтобы .7z использовался чаще по той же причине, по которой музыка не продается в онлайн-магазинах загрузки в совершенно новых форматах, таких как Opus , или видео в WebM . Совместимость с людьми, использующими древние или очень простые системы, важна.
источник
tar.Z
(сжимать / распаковывать). Развитие утилит было постоянным потоком (без каламбура) изменений и улучшений: Z => zip => gz => bz2 => 7z => xz (или любой другой порядок, который вы предпочитаете). Что касается роли tar, некоторые используют только un / compress и все еще требуют, чтобы tar связывал файловые иерархии.Tar имеет богатый набор операций и модификаторов, которые знают все о файловых системах Unix. Он знает о разрешениях Unix, о различном времени, связанном с файлами, о жестких ссылках, о мягких ссылках (и о возможности того, что символические ссылки могут вводить циклы в графе файловой системы), и позволяет вам указать несколько различных способов управления всеми этими данными ,
Вы хотите, чтобы извлеченные данные сохраняли время доступа к файлу? Тар может сделать это. Чтобы сохранить разрешения? Тар может сделать это.
Вы хотите сохранить символические ссылки как символические ссылки? Tar делает это по умолчанию. Хотите скопировать цель вместо этого? Тар может сделать это.
Хотите ли вы быть уверены, что данные с жесткими ссылками хранятся только один раз (то есть, чтобы делать правильные вещи)? Тар делает это.
Вы хотите хорошо обрабатывать разреженные файлы? Тар может сделать это.
Вы хотите несжатые данные (почему?)? Тар может сделать это. Сжать с помощью gzip? Тар может сделать это. С бзип2? Тар может сделать это. С произвольными программами внешнего сжатия? Тар может сделать это.
Вы хотите записать или восстановить на / с необработанного устройства? Формат Tar прекрасно с этим справляется.
Хотите добавить файлы в существующий архив? Тар может сделать это. Разобрать два архива, чтобы увидеть, что изменилось? Тар может сделать это. Обновлять только те части архива, которые изменились? Тар может сделать это.
Вы хотите быть уверены, что не архивируете более, чем одну файловую систему? Тар может сделать это.
Вы хотите получить только те файлы, которые новее, чем ваша последняя резервная копия? Тар может сделать это.
Вы хотите сохранить имена и номера пользователей и групп? Тар может сделать любой.
Вам нужно сохранить узлы устройства (например, файлы в
/dev
), чтобы после извлечения система работала правильно? Тар может сделать это.Tar развивался, чтобы обрабатывать множество вариантов использования на протяжении десятилетий и действительно много знает о том, что люди хотят делать с файловыми системами Unix.
источник
f -
и передать его в компрессор.tar
очень часто копирую дерево файловой системы из одного места в другое и сохраняю разрешения и т. Д., И сжатие в этом случае просто требует дополнительных циклов ЦП. Напримерtar cf - * | tar xf - -C /somewhere
.Вы путаете два разных процесса архивирования и сжатия .
Причины использования архиватора
Одна из причин использовать архивирование без сжатия, например, если множество файлов копируется с одного хоста на другой. Команда, подобная следующей
может значительно ускорить процесс. Если я знаю, что файлы не могут быть сжаты или если SSH настроен на сжатие, это может сэкономить значительное время процессора. Конечно, можно использовать более современный инструмент сжатия с функцией архивирования и отключить сжатие. Преимущество
tar
состоит в том, что я могу ожидать, что это будет доступно на каждой системе.Причины использования архиватора со сжатием gzip
Одна из причин , что я использую
tar
сgzip
это: скорость! Если я хочу перенести несколько ГиБ текстовых файлов из одного места в другое, мне не нужно выдавливать последние байты, поскольку сжатие используется только для транзита, а не для длительного хранения. В тех случаяхgzip
, которые я использую , это не приводит к максимальной загрузке ЦП (в отличие, например, от 7-Zip ), что означает, что я снова связан с вводом / выводом, а не с ЦП. И снова:gzip
можно считать доступным везде.Причины для использования
tar
в пользуscp
,rsync
и т.д.Это лучше,
scp
если у вас есть много небольших файлов для копирования (например, почтовые каталоги с сотнями тысяч файлов).rsync
, как это ни круто, не может быть доступно везде. Кроме того,rsync
только окупается, если часть файлов - или более старая версия - уже присутствует в месте назначения. Для первоначальной копииtar
это самый быстрый, со сжатием или без, в зависимости от фактических данных.источник
tar cf - . | (cd ~/somewhere; tar xvf -)
. Действительно полезно не ждать, пока будет записан центральный индекс (как, например, в zip-файле).Добавляя к другим хорошим ответам здесь, я предпочитаю комбинацию
tar
+gzip|bzip2|xz
главным образом потому, что эти сжатые файлы похожи на потоки, и вы можете легко их передать.Мне нужно распаковать файл, доступный в интернете. С либо
zip
илиrar
форматами я должен загрузить его первым , а затем разархивировать его. С помощьюtar.{gz,bz2,xz}
я могу скачать и распаковать на одном шаге, без необходимости физически сжатый архив на диске:Это оставит только несжатые файлы на моем диске и ускорит весь процесс, потому что я не тяну время, чтобы сначала загрузить весь файл, а после его завершения я распаковываю его. Вместо этого я распаковываю его во время загрузки. Вы не можете сделать это с помощью
zip
илиrar
файлов.источник
funzip
просто извлекает первый файл в zipfile, а не все.tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Есть несколько причин придерживаться (GNU) Tar.
Это:
Если ваша конкретная проблема связана с необходимостью «распаковать» тарбол, прежде чем вы сможете прочитать содержимое, то вы, вероятно, правы. WinRAR и 7-Zip делают это автоматически. Однако существуют простые обходные пути для этой проблемы, такие как документирование содержимого архива в несжатом виде.
источник
Форматы файлов, такие как .zip, требуют, чтобы программа сначала прочитала конец файла, чтобы прочитать каталог с именами файлов. И наоборот, tar хранит эту информацию в сжатом потоке.
Преимущество метода tar заключается в том, что вы можете распаковывать данные, читая их из канала без возможности поиска, такого как сетевой сокет.
Преимущество zip-способа заключается в том, что для статического файла на диске вы можете просматривать содержимое и метаданные, не распаковывая сначала весь архив.
Оба имеют свое применение, в зависимости от того, что вы делаете.
источник
Кажется, есть некоторое нежелание отвечать на все ваши вопросы напрямую, с очевидным предпочтением использовать ваш вопрос в качестве отправной точки для понтификации. Так что я сделаю это.
Нет. Фактически, поскольку tar и gzip обычно являются двумя процессами, вы даже получаете преимущество в скорости многоядерности, которое не обеспечивает такой архиватор, как zip-файл Info-ZIP. С точки зрения степени сжатия tar + gzip обычно работает заметно лучше, чем zip с deflate, так как первый может извлечь выгоду из корреляции между файлами, тогда как последний сжимает файлы отдельно. Это преимущество сжатия приводит к выигрышу в скорости при извлечении, поскольку более сжатый архив распаковывается за меньшее время.
Да, tar был разработан для Unix и развивался на протяжении многих лет, чтобы иметь возможность точно записывать и восстанавливать каждую странную и непонятную часть файловых систем Unix, даже более изящную и изворотливую файловую систему Unix Mac OS X. zip может сохранять большую часть метаданных, таких как разрешения, время, владельцы, группы и символические ссылки, но все же не все. Например, ни zip, ни 7z не могут распознать или использовать разреженные файлы, а также не знают и не могут восстановить жесткие ссылки.
Здесь есть много других хороших ответов. Лучше всего то, что он просто работает , и вы можете постоянно обновлять его до лучших форматов сжатия (например, xz) и при этом использовать тот же формат tar и даже одну и ту же утилиту скомпилированного tar. Если вы просто хотите упаковать кучу вещей, а затем распаковать все это на другом конце, то нет особых оснований использовать что-либо, кроме одного из самых старых, самых полных и наиболее отлаженных кусков программного обеспечения.
Если вам нужен произвольный доступ, частичные обновления или другие вещи, которые должны иметь дело с частичным содержанием, или вы хотите иметь возможность выяснить, что в нем, не читая все это, тогда вы захотите использовать другой формат.
источник
Представление
Большим отличием является порядок, в котором сжатие и архивирование выполняются в
tar
архивах. Затем можно при желании отправить архив в компрессор,zip
создать архив и сжать данные файла в виде фрагментов по 32 КБ по мере их вставки в архив. Разбивая данные файла на маленькие порции и сжимая их по отдельности, это позволяет извлекать определенные файлы или части файлов без необходимости распаковывать все в архиве перед ним. Это также не позволяет компрессору создавать очень большой словарь перед его перезапуском. Это означает, что сжатие будет идти быстрее, но не даст такого хорошего соотношения, как сжатие всего с большим размером словаря.Вы можете визуализировать это, думая о двух файлах, где первые 500 байтов второго файла совпадают с последними 500 байтами первого файла. При использовании этого
zip
метода компрессор перезапускается для второго файла, поэтому он не запоминает, что первый файл заканчивался теми же данными, поэтому он не может удалить дубликаты данных из второго файла.популярность
Есть много других форматов, которые имеют ряд преимуществ перед
tar
. 7-Zip не хранит права доступа к файлам Unix, ноdar
делает иzip
может, и все три хранят индекс, который позволяет быстро просматривать, извлекать подмножество файлов и обновлять файлы в архиве. Они также могут использовать многоядерные процессоры для сжатия.Причиной, по которой все по-прежнему пользуются,
tar
является та же причина, по которой все по-прежнему используют Windows и Flash : людям не нравятся перемены. Без веской причины для перемен люди просто придерживаются того, что знают.dar
не дает достаточных преимуществ, чтобы оправдать публикацию файлов в формате, когда большинство людей ужеtar
установили, и очень немногие знают об этомdar
, поэтому простая инерция держит нас на старом стандарте.источник
Tar был создан для полного резервного копирования файловой системы, а не только для передачи файлов. Таким образом, утилита tar является наиболее полной утилитой для создания архива, который сохраняет все важные сведения о структуре вашей файловой системы.
Это включает в себя все эти функции, которые отсутствуют в одном или нескольких конкурирующих инструментах:
Он также имеет
--one-file-system
опцию, которая чрезвычайно полезна при создании резервных копий.Каждый раз, когда в файловые системы добавляется новая функция, поддержка добавляется
tar
первой (или даже исключительно). Таким образом, он продолжает оставаться наиболее совместимым способом сохранения файлов.источник
Сегодня у нас много сжатых файлов: MP3, JPG, видео, файлы tar.gz, JAR-пакеты, RPM, DEB и так далее. Если вам нужно объединить их в один файл для передачи, тогда полезно иметь утилиту 'tar', которая объединяет только файлы, не пытаясь сжать их.
Мало того, что он тратит время и электричество, пытаясь сжать сжатый файл, но это часто приводит к тому, что файл больше, чем оригинал.
Другое использование этого - улучшить степень сжатия. Например, если вы «tar» связываете файлы журналов, а затем распаковываете результат, вы, скорее всего, получите файл меньшего размера, чем если бы вы сначала сжали его, а затем связали с «tar». И, конечно же, используя tar, вы можете выбрать любой алгоритм сжатия, который вы хотите, и указать параметры для оптимизации сжатия для вашего конкретного случая использования.
Я считаю, что tar 'очень актуален сегодня, и я предпочитаю использовать ZIP. В нашем офисе у каждого с Windows установлен 7-zip, поэтому для нас tar-файлы полностью кроссплатформенны.
источник
tar
файлов, и для этого есть причина.tar
использует очень большие куски, это означает, что вы получаете много заполнения в конце файлов. Чтобы избавиться от всех этих нулей, почти всегда стоит просто использовать,gzip
не задумываясь.Может быть, нас интересует, почему такие «новые» форматы файлов, выполняющие как сжатие, так и агрегацию (и я бы добавил шифрование), не основаны на tar с самого начала, а на совершенно разных инструментах.
Насколько я понимаю, существуют исторические причины (связанные с историей ОС, «защитой» патентов, способностью поставщика программного обеспечения продавать инструменты и т. Д.).
Теперь, как указывал другой ответ, даже сейчас tar явно не уступает другим решениям и может быть лучше по другим аспектам, таким как способность работать с потоками или управление правами Unix.
Если вы прочитаете статью про tar из Википедии, вы увидите еще один интересный факт. В статье признаются некоторые недостатки tar ... но не предлагается использовать zip (действительно, формат zip не устраняет эти недостатки), но DAR.
Я закончу с личным контактом. Несколько раз назад мне пришлось создать формат файла для хранения зашифрованных данных. Использовать tar в качестве основы было удобно (другие сделали такой же выбор, например, tar является внутренним форматом агрегации для пакетов .deb). Для меня было очевидно, что пытаться сжимать данные после шифрования совершенно бесполезно, я должен был выполнить сжатие как независимый шаг перед шифрованием, и я не был готов использовать zip-шифрование (я хотел шифрование с двумя ключами с открытым и закрытым ключами) , Используя смолу это работало как ветер.
источник
Я удивлен, что никто не упомянул об этом, но одна из причин - на самом деле не преимущество, а необходимость - заключается в обратной совместимости. На протяжении десятилетий существует множество систем, в которых работает программное обеспечение, которое может потребовать
tar
архивирования. Не выгодно нанимать кого-то, чтобы «починить» все старые системы.источник
tar - это UNIX, а UNIX - это tar
На мой взгляд, причина по- прежнему использования
tar
сегодня, состоит в том, что это один из (вероятно, редких) случаев, когда подход UNIX просто сделал его совершенно правильным с самого начала.Присмотревшись ближе к этапам создания архивов, я надеюсь, вы согласитесь, что способ разделения различных задач здесь - это философия UNIX в своих лучших проявлениях :
один инструмент (
tar
чтобы дать ему название), специализирующийся на преобразовании любого набора файлов, каталогов и символических ссылок, включая все соответствующие метаданные, такие как метки времени, владельцев и разрешения, в один поток байтов.и просто еще один произвольно заменяемый инструмент (
gzip
bz2
xz
чтобы назвать только несколько вариантов), который преобразует любой входной поток байтов в другой (мы надеемся) меньший выходной поток.Использование такого подхода обеспечивает целый ряд преимуществ как для пользователя, так и для разработчика:
расширяемость Позволяет соединиться
tar
с любым уже существующим алгоритмом сжатия или любым алгоритмом сжатия, который еще предстоит разработать, без необходимости что-либо менять во внутренней работеtar
.Как только выйдет совершенно новый «hyper-zip-utra» или инструмент для сжатия воды, вы уже готовы использовать его, охватывая нового слугу со всей силой
tar
.стабильность
tar
начала интенсивно использоваться с начала 80-х годов и была протестирована на многих операционных системах и машинах.Предотвращение необходимости заново изобретать колесо при реализации хранения прав собственности, разрешений, временных отметок и т. П. Снова и снова для каждого нового инструмента архивации не только экономит много (в противном случае излишне затраченных) времени на разработку, но также гарантирует одинаковую надежность для каждого новое приложение.
консистенция Пользовательский интерфейс просто остается неизменным все время.
Нет необходимости помнить, что для восстановления прав доступа с помощью инструмента A необходимо передать параметр,
--i-hope-you-rember-this-one
а с помощью инструмента B - использовать--this-time-its-another-one
когда используете инструмент C, это `--hope-you-didnt-try-with-tool-as-switch.В то время как при использовании инструмента D вы бы действительно испортили его, если бы не использовали
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.источник
Много хороших ответов, но все они игнорируют важный факт. Tar имеет устоявшуюся экосистему пользователей и разработчиков в Unix-подобном мире. Это продолжает работать так же, как ZIP продолжает свою экосистему DOS / Windows. Наличие такой экосистемы - это то, что поддерживает технологию, а не ее технические преимущества.
источник
Причина - «закрепление в культуре». Есть множество таких людей, как я, чьи глаза закрываются, если их просят обработать что-либо, кроме сжатого tar-архива или случайного ZIP-файла, если это происходит из мира Windows.
Я не хочу слышать о 7-Zip, RAR или о чем-либо еще. Если мне нужно установить программу для распаковки вашего файла, это работа. Я сделаю это, если это приведет к тому, что мне заплатят, или если контент - это то, что я "должен иметь" и не доступен другим способом.
Одним из преимуществ tar является то, что если вы отправляете кому-то тарбол, он мгновенно распознается. Получатель может вводить команды извлечения, используя мышечную память.
Реальный вопрос заключается в следующем: почему некоторые люди так одержимы экономией еще одного байта пространства, что просят всех остальных тратить время на установку какой-то экзотической утилиты и обучение ее использованию? И затем есть глупое использование экзотических форматов сжатия и архивирования. Действительно ли видео H.264 со звуком AAC необходимо поместить в RAR с несколькими частями?
Формат tar может быть старым, но в нем хранится все, что имеет отношение: содержимое файла, пути, временные метки, разрешения и владельцы. Он хранит не только символические ссылки, но и сохраняет жесткую структуру ссылок. Он также хранит специальные файлы, поэтому архив на магнитной ленте может использоваться для таких вещей, как миниатюрный
/dev
каталог, который используется во время начальной загрузки. Вы можете объединить дистрибутив Linux, формат двоичного пакета которого состоит из ничего, кроме тарболов, которые не сжаты относительно корня файловой системы.источник
Непосредственно отвечая на конкретные вопросы, которые вы задали:
В некоторых случаях наблюдается конкретное улучшение производительности,
tar
особенно при использовании встроенной библиотеки сжатия ( командные строкиtar xvzf
илиtar xvjf
стиль, где используется библиотека сжатия, а не второй процесс). Это происходит от двух основных причин:при обработке большого количества относительно небольших файлов, особенно тех, которые обычно используются при распространении программного обеспечения, существует высокая избыточность. Сжатие во многих файлах приводит к более высокому общему сжатию, чем сжатие отдельных файлов. И «словарь» вычисляется один раз для каждого блока ввода, а не для каждого файла.
tar
понимает файловые системы. Он предназначен для сохранения и восстановления работающей / работоспособной операционной системы. Он глубоко понимает, что именно важно в файловой системе UNIX, и точно фиксирует и восстанавливает это. Другие инструменты ... не всегда, особенно семейство zip, которое лучше предназначено для совместного использования файлов в семействе ОС, где важен документ, а не точная копия, чувствительная к ОС.Разреженная обработка файлов. Некоторые из прямых библиотек баз данных полагаются на разреженные файлы - файлы, в которых данные номинально являются ГБ, но фактических записанных и сохраненных данных намного, намного меньше, и фактически используется только несколько блоков диска. Если вы используете незнакомый инструмент, то при декомпрессии вы получите огромное потребление дисковых блоков, все с нулями. Превратить это обратно в редкий файл ... больно. Если у вас даже есть комната, чтобы сделать это. Вам нужен инструмент, который понимает, что такое разреженный файл, и уважает его.
Метаданные. Unix развил некоторые странные вещи за эти годы. 14-символьные имена файлов, длинные имена файлов, ссылки sym-ссылок, липкие биты, биты суперпользователя, унаследованные права доступа к группе и т. Д. Tar понимает и воспроизводит их. Инструменты для обмена файлами ... не так много. Многие люди используют ссылки не так, как могли бы ... Если вы когда-либо работали с программным обеспечением, которое использует ссылки, а затем использовали неосведомленный инструмент для резервного копирования и восстановления, теперь у вас есть много независимых файлы, а не один файл со многими именами. Боль. Ваше программное обеспечение дает сбой, и у вас есть раздувание диска.
tar
работает. Это делает работу, для которой это разработано, хорошо. Там были другие рекламируемые замены (cpio
,pax
и т.д., и т.д.). Но tar установлен практически на все, и библиотеки сжатия, которые он использует, также очень распространены по другим причинам. Ничего другого не произошло, что существенно превосходит то, что делает смола. Без явных преимуществ, большого количества встроенного использования и знаний в сообществе замены не будет. Тар много лет использовался. Если мы получим серьезные изменения в том, как мы думаем о файловых системах, или нетекстовые файлы каким-то образом станут способом передачи кода (в настоящее время не могу себе представить, как, но проигнорируйте это ...), тогда вы можете найти другой инструмент. Но тогда это будет не тот тип ОС, который мы сейчас используем. Это было бы по-другому, организовано по-другому, и для этого потребовались бы свои собственные инструменты.Я думаю, что самый важный вопрос, который вы не задавали, заключается в том, для каких рабочих мест «тар» не подходит.
tar
с компрессией хрупкий. Вам нужен весь архив, бит за битой. По моему опыту, это не устойчиво. У меня были ошибки в одном бите, в результате чего архивы из нескольких частей стали непригодными для использования. Он не вводит избыточность для защиты от ошибок (что может решить один из заданных вами вопросов о сжатии данных). Если существует вероятность повреждения данных, вам нужна проверка ошибок с избыточностью, чтобы вы могли восстановить данные. По определению это означает, что вы не максимально сжаты. Вы не можете иметь оба бита данных, которые требуются и несут максимальное значение (максимальное сжатие), и каждый бит данных может быть потерян и восстановлен (избыточность и исправление ошибок). Итак ... какова цель вашего архива?tar
отлично подходит для сред с высокой надежностью и когда архив может быть снова воспроизведен из исходного кода. ИМХ, на самом деле хуже оригинальной вещи, которую предлагают ее названия - архивирование на магнитной ленте. Однобитовые ошибки на ленте (или, что еще хуже, однобитовые ошибки в головке ленты, когда вы теряете один бит на каждый байт всей ленты или архива), приводят к невозможности использования данных. При достаточной избыточности, обнаружении и исправлении ошибок вы можете пережить любую из этих проблем.Итак ... сколько шума и искажений в среде, которую вы просматриваете, и можно ли использовать источник для восстановления поврежденного архива? Ответ, который вы указали, заключается в том, что система не шумит, и этот источник способен восстановить архив. В каком случае
tar
это адекватно.tar
с компрессией также плохо работает с предварительно сжатыми файлами. Если вы отправляете уже сжатые данные ... просто используйте tar и не беспокойтесь о стадии сжатия - он просто добавляет циклы ЦП, чтобы сделать немного. Это означает, что вам нужно знать, что вы отправляете и почему. Если тебе не все равно. Если вас не волнуют эти особые случаи, то tar точно скопирует данные, а сжатие не сможет сделать много полезного, чтобы уменьшить его. Нет большой проблемы, кроме некоторых циклов процессора.источник
TAR - это Ленточный Архив. Это было вокруг в течение десятилетий, и это широко используется и поддерживается. Это зрелый продукт, который отвечает как текущим, так и устаревшим потребностям.
источник