В чем преимущество использования «tar» сегодня?

Я знаю, что tar был создан для ленточных архивов в тот же день, но сегодня у нас есть форматы архивных файлов, которые объединяют файлы и выполняют сжатие в одном и том же формате логических файлов.

Вопросы:

  • Существует ли ограничение производительности на этапах агрегации /сжатия /декомпрессии для использования tar , заключенного в gzip или bzip2 , когда по сравнению с использованием формата файла, который выполняет агрегацию и сжатие в одной и той же структуре данных? Предположим, что время выполнения сравниваемого компрессора идентично (например, gzip и Deflate похожи).

  • Есть ли особенности формата файла tar , что другие форматы файлов, такие как .7z и .zip , не имеют

  • Так как tar является таким старым файловым форматом, а более новые форматы файлов существуют сегодня, почему tar (инкапсулирован в gzip , bzip2 или даже новый xz ), который так широко используется сегодня в GNU /Linux, Android, BSD и других таких операционных системах UNIX, для передачи файлов, источника программы и бинарные загрузки, а иногда даже в виде формата диспетчера пакетов?

205 голосов | спросил MarcusJ 14 MarpmThu, 14 Mar 2013 18:33:41 +04002013-03-14T18:33:41+04:0006 2013, 18:33:41

18 ответов


173

Часть 1: Производительность

Вот сравнение двух отдельных рабочих процессов и их действий.

У вас есть файл на диске blah.tar.gz , который, скажем, 1 Гб сжатых данных gzip, который при несжатом состоянии занимает 2 ГБ (поэтому степень сжатия 50%), .

Как вы могли бы создать это, если бы вы делали архивацию и сжатие отдельно, было бы:

  tar cf файлы blah.tar ...
 

Это приведет к blah.tar , который является простой агрегацией файлов ... в несжатой форме.

Тогда вы сделали бы

  gzip blah.tar
 

Это будет читать содержимое blah.tar с диска, сжать их через алгоритм сжатия gzip, записать содержимое в blah.tar.gz , затем отсоединить ( удалите) файл blah.tar .

Теперь давайте распакуем!

Способ 1

У вас есть blah.tar.gz , так или иначе.

Вы решили запустить:

  gunzip blah.tar.gz
 

Это будет

  • ПРОЧИТАЙТЕ сжатое содержимое сжатого содержимого blah.tar.gz .
  • ПРОЦЕССА сжатых данных с помощью декомпрессора gzip в памяти.
  • Когда буфер памяти заполняет «ценность блока», WRITE несжатые данные в файл blah.tar на диске и повторяйте, пока не будут прочитаны все сжатые данные.
  • Отключить (удалить) файл blah.tar.gz .

Теперь у вас есть blah.tar на диске, который несжатый, но содержит в нем один или несколько файлов с очень низкими издержками структуры данных. Размер файла, вероятно, составляет пару байтов больше, чем сумма всех файлов данных.

Вы запускаете:

  tar xvf blah.tar
 

Это будет

  • ПРОЧИТАЙТЕ 2 ГБ несжатого содержимого данных blah.tar и структур данных формата файла tar , включая информацию о разрешениях файлов, именах файлов, каталогах и т. д.
  • НАПИСАТЬ 2 ГБ данных плюс метаданные на диск. Это включает в себя: перевод информации о структуре данных /метаданных в создание соответствующих файлов и каталогов на диске или переписывание существующих файлов и каталогов с новым содержимым данных.

Общий объем данных READ с диска в этом процессе составил 1 ГБ (для gunzip) + 2 ГБ (для tar) = 3 ГБ.

Общий объем данных WROTE на диске в этом процессе составил 2 ГБ (для gunzip) + 2 Гб (для tar) + несколько байтов для метаданных = около 4 ГБ.

Путь 2

У вас есть blah.tar.gz , так или иначе.

Вы решили запустить:

  tar xvzf blah.tar.gz
 

Это будет

  • ПРОЧИТАЙТЕ сжатое содержимое сжатого содержимого blah.tar.gz , блок за раз, в память.
  • ПРОЦЕССА сжатых данных с помощью декомпрессора gzip в памяти.
  • По мере того, как буфер памяти заполняется, он будет передавать эти данные в памяти через парсер формата файла tar , который будет считывать информацию о метаданных и т. д. и несжатые данные файла.
  • По мере того как буфер памяти заполняется в парсере файлов tar , он будет записывать несжатые данные на диск, создавая файлы и каталоги и заполняя их несжатым содержимым.

Общие данные we READ с диска в этом процессе составляли 1 ГБ сжатых данных, период.

Общий объем данных WROTE на диске в этом процессе составил 2 ГБ несжатых данных + несколько байтов для метаданных = около 2 ГБ.

Если вы заметили, объем ввода /вывода на диске в Путь 2 равен идентичным для ввода /вывода на диске, выполняемого, например, Zip или 7-Zip , корректируя любые различия в степени сжатия.

И если вам нужна степень сжатия, используйте компрессор Xz для инкапсуляции tar , и у вас есть LZMA2'ed TAR-архив, который так же эффективен, как и самый продвинутый алгоритм, доступный для 7-Zip : -)

Часть 2: Функции

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

Часть 3: Совместимость

Многие инструменты распространяются в исходной или двоичной форме как .tar.gz или .tar.bz2, потому что это формат файла с наименьшим общим знаменателем: как и большинство пользователей Windows имеют доступ к распаковкам .zip или .rar, большинствоLinux-установки, даже самые простые, будут иметь доступ, по крайней мере, к tar и gunzip, независимо от того, насколько старый или урезанный. Даже прошивки для Android имеют доступ к этим инструментам.

Новые проекты, предназначенные для аудиторий, работающих в современных дистрибутивах, могут очень распространяться в более современном формате, таком как .tar.xz (с использованием формата сжатия Xz (LZMA), который сжимается лучше, чем gzip или bzip2) или .7z, что аналогичен формату ZIP или RAR , поскольку он сжимает и определяет макет для инкапсуляции нескольких файлов в один файл.

Вы не видите .7z чаще используются по той же причине, что музыка не продается из магазинов онлайн-загрузки в совершенно новых форматах, таких как Opus или видео в WebM , Совместимость с людьми, использующими древние или очень простые системы.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
100

На этот был дан ответ на переполнение стека .

  

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

     

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

Многие инструменты распространяются в исходной или двоичной форме как .tar.gz или .tar.bz2, потому что это формат файла с наименьшим общим знаменателем: как и большинство пользователей Windows имеют доступ к распаковкам .zip или .rar, большинство установок Linux, даже самые базовые, будут иметь доступ, по крайней мере, к tar и gunzip , независимо от того, сколько лет или пошло. Даже прошивки для Android имеют доступ к этим инструментам.

Новые проекты, предназначенные для аудиторий, работающих в современных дистрибутивах, могут очень хорошо распространяться в более современном формате, например .tar.xz (используя Xz ( LZMA ) формат сжатия, который сжимается лучше, чем gzip или bzip2) или .7z, что аналогично ZIP или RAR в том, что он сжимает и задает макет для инкапсуляции нескольких файлов в один файл.

Вы не видите .7z чаще используются по той же причине, что музыка не продается в магазинах онлайн-загрузки в совершенно новых форматах, таких как Opus или видео в WebM . Важна совместимость с людьми, использующими древние или очень простые системы.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
61

У Tar есть богатый набор операций и модификаторов, которые знают все о системах файлов Unix. Он знает о разрешениях Unix, о разных временах, связанных с файлами, о жестких ссылках, о программных ссылках (и о возможности того, что символические ссылки могут вводить циклы в графике файловой системы) и позволяет указать несколько разных способов управления всеми этими данными .

  • Вы хотите, чтобы извлеченные данные сохраняли время доступа к файлу? Тар может это сделать. Чтобы сохранить разрешения? Тар может это сделать.

  • Вы хотите сохранить символические ссылки как символические ссылки? Тар делает это по умолчанию. Хотите скопировать цель вместо этого? Тар может это сделать.

  • Вы хотите быть уверенным, что данные с жесткой привязкой сохраняются только один раз (то есть, чтобы делать правильные вещи)? Тар делает это.

  • Вы хотите хорошо обрабатывать разреженные файлы? Тар может это сделать.

  • Вы хотите несжатые данные (почему?)? Тар может это сделать. Сжать с помощью gzip? Тар может это сделать. С bzip2? Тар может это сделать. С произвольными программами внешнего сжатия? Тар может это сделать.

  • Вы хотите написать или восстановить на /из необработанного устройства? Формат Тэра отлично подходит.

  • Вы хотите добавить файлы в существующий архив? Тар может это сделать. Чтобы разделить два архива, чтобы узнать, что изменилось? Тар может это сделать. Обновить только те части архива, которые изменились? Тар может это сделать.

  • Вы хотите, чтобы убедиться, что вы не архивируете более чем одну файловую систему? Тар может это сделать.

  • Вы хотите захватить только файлы, которые новее, чем ваша последняя резервная копия? Тар может это сделать.

  • Вы хотите сохранить имена и номера пользователей и групп? Тар может сделать любой.

  • Вам нужно сохранить узлы устройств (например, файлы в /dev ), чтобы после извлечения система работала правильно? Тар может это сделать.

Тар развивается, чтобы обрабатывать множество и множество вариантов использования на протяжении десятилетий и действительно знает много о том, что люди хотят делать с файловыми системами Unix.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
28

Вы путаете два разных процесса архивирования и сжатия .

Причины использования архиватора

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

  tar cf - some_directory | ssh host "(cd ~ /where | tar xf -)"
 

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

Причины использования архиватора с сжатием gzip

Одна из причин, по которой я использую tar с gzip : speed! Если я хочу передать несколько GiB текстовых файлов из одного места в другое, я не заботятся о том, чтобы выжать последние байты, поскольку только сжатие используется для транзита, а не для длительного хранения. В таких случаях я использую gzip , который не максимизирует процессор (в отличие от 7-Zip , например) , который означает, что я I /O связан снова и не связан с ЦП. И снова: gzip может быть считается доступным во всем мире.

Причины использования tar в пользу scp , rsync и т. д.

Это бит scp , если у вас есть много небольших файлов для копирования (например, почтовые каталоги со сто тысяч файлов). rsync , как ни странно, может быть недоступен везде. Кроме того, rsync действительно окупается, если часть файла - или более старая версия - уже присутствует в пункте назначения. Для исходной копии tar является самым быстрым, с сжатием или без, в зависимости от фактических данных.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
24

Добавляя к другим хорошим ответам здесь, я предпочитаю комбинацию tar + gzip | bzip2 | xz в основном потому, что эти сжатые файлы похожи на потоки, и вы можете их обменивать легко.

Мне нужно распаковать файл, доступный в Интернете. При использовании форматов zip или rar я должен сначала загрузить его, а затем распаковать. С помощью tar. {Gz, bz2, xz} Я могу загрузить и распаковать один и тот же шаг без необходимости архивирования сжатого архива на диске:

  curl -s http://example.com/some_compressed_file.tar.gz | tar zx
 

Это оставит только несжатые файлы на моем диске и ускорит весь процесс, потому что я не откладываю время, сначала загружая весь файл, и после завершения загрузки я распаковываю его. Вместо этого я раскалываю его во время загрузки. Вы не можете сделать это с помощью zip или rar файлов.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
13

Есть несколько причин придерживаться (GNU) Tar.

Это:

  • Лицензия GPL
  • хорошо в смысле философии Unix
    • инструмент для одной цели, способный выполнять несколько задач.
  • хорошо документировано и имеет много доверенных функций
  • совместим с несколькими алгоритмами сжатия
  • проста в использовании, и у людей сложились привычки с ней.
  • широкодоступный
  • Я чувствую себя тепло и нечетко внутри, используя программное обеспечение, начатое RMS ( исключая Emacs )

Если ваша конкретная говядина должна «декомпрессировать» архив, прежде чем вы сможете прочитать содержимое, то вы, вероятно, правы. WinRAR и 7-Zip сделать это автоматически. Тем не менее, есть простые способы решения этой проблемы, такие как документирование содержимого архива в несжатой форме.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
11

Форматы файлов, такие как .zip требуют , чтобы программное обеспечение сначала прочитало конец файла, чтобы прочитать каталог имен файлов. И наоборот, tar хранит эту информацию в сжатом потоке.

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

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

Оба имеют свои возможности, в зависимости от того, что вы делаете.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
11

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

  

Существует ли штраф за исполнение во время   стадии агрегации /сжатия /декомпрессии для использования tar   инкапсулированный в gzip или bzip2, по сравнению с использованием формата файла   что делает агрегацию и сжатие в одной и той же структуре данных?   Предположим, что время выполнения сравниваемого компрессора идентично (например,   gzip и Deflate похожи).

Нет. На самом деле, поскольку tar и gzip обычно являются двумя процессами, вы даже получаете хайлик с многоядерным ускорением, что архиватор, такой как ZIP-ZIP Info-ZIP, не предоставляет. С точки зрения степени сжатия tar + gzip обычно заметно лучше, чем zip с дефлятом, поскольку первый может извлечь выгоду из корреляции между файлами, тогда как последний сжимает файлы по отдельности. Это преимущество сжатия приносит преимущество в скорости при извлечении, поскольку более сжатый архив распаковывается за меньшее время.

  

Существуют ли особенности формата tar-файла, которые используются в других форматах файлов,   таких как .7z и .zip, не имеют?

Да, tar был разработан для Unix, и на протяжении многих лет он эволюционировал, чтобы иметь возможность точно записывать и восстанавливать каждый нечетный маленький уголок и файловую систему Unix, даже новичку и более жесткую файловую систему Mac OS X Unix. zip может сохранить большую часть метаданных, таких как разрешения, времена, владельцы, группы и символические ссылки, но все же не все. Например, ни zip, ни 7z не могут распознавать или использовать разреженные файлы, а также не знают или не могут восстановить жесткие ссылки.

  

Так как tar является таким старым файловым форматом и существуют более новые форматы файлов   сегодня, почему tar (инкапсулирован в gzip, bzip2 или даже новый   xz), который так широко используется сегодня в GNU /Linux, Android, BSD и других   таких операционных систем UNIX, для передачи файлов, источника программы и   бинарных загрузок, а иногда даже в формате диспетчера пакетов?

Здесь есть много других хороших ответов. Лучше всего, что он просто работает , и вы можете продолжать его обновлять до лучших форматов сжатия (например, xz) и по-прежнему использовать один и тот же формат tar и даже ту же самую компилированную утилиту tar. Если вы просто хотите собрать кучу вещей, а затем распаковать все это на другом конце, тогда нет оснований использовать что-либо, кроме одного из самых старых, наиболее полных и наиболее отлаженных программ.

Если вы хотите получить произвольный доступ, частичные обновления или другие вещи, которые должны иметь дело с содержанием по частям, или вы хотите узнать, что в нем, не читая всего этого, тогда вы хотели бы использовать другое формат.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
11

Производительность

Большая разница - это порядок сжатия и архивирования. Архивы tar , затем можно отправить архив в компрессор, а zip создает архивировать и сжимает данные файла в блоках размером 32 Кб, когда он вставлен в архив. Разбирая данные файла на мелкие куски и сжимая их отдельно, он позволяет извлекать определенные файлы или части файлов без необходимости распаковывать все в архиве до него. Это также мешает компрессору создавать очень большой словарь перед его перезапуском. Это означает, что сжатие будет идти быстрее, но не дает такого же отношения, как сжатие всего, с большим размером словаря.

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

Популярность

Существует множество других форматов, которые имеют ряд преимуществ перед tar . 7-Zip не сохраняет разрешения файлов Unix, но dar делает, а zip может, и все три хранят индекс, который позволяет быстро просматривать, извлекать подмножество файлов и обновлять файлы в архиве. Они также могут использовать многоядерные процессоры для сжатия.

Причина, по которой все по-прежнему использует tar , по той же причине, что все все еще используют Windows, и Flash : людям не нравятся изменения. Без сильной причины, чтобы изменить, люди просто придерживаются того, что они знают. dar не дает достаточного преимущества для обоснования публикации файлов в формате, когда большинство людей уже установлено tar , и очень мало знают о dar , поэтому простая инерция удерживает нас на прежнем уровне.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
6

Tar был создан для создания резервных копий полной резервной копии вашей файловой системы, а не только для переноса файлов. Таким образом, утилита tar является самой полной утилитой для создания архива, которая сохраняет все важное значение в вашей структуре файловой системы.

Это включает все эти функции, отсутствующие в одном или нескольких конкурирующих инструментах:

  • владение файлами
  • права доступа к файлам
  • менее общие разрешения файлов (например, setuid, липкий бит)
  • символические ссылки
  • жесткие ссылки
  • записи устройства (то есть символьные и блочные устройства)
  • разреженные файлы
  • Записи ACL ( не поддерживаются всеми версиями )
  • расширенные /пользовательские атрибуты ( не поддерживаются всеми версиями )
  • метки SElinux ( не поддерживаются всеми версиями )

Он также имеет параметр - one-file-system , который чрезвычайно полезен при создании резервных копий.

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

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
5

У нас есть много сжатых файлов, плавающих сегодня, MP3, JPG, видео, tar.gz-файлы, пакеты JAR, RPM, DEB и т. д. Если вам нужно связать кучу из них в один файл для передачи, полезно иметь утилиту «tar», которая связывает только файлы, не пытаясь их сжать.

Не только тратит время и электричество на попытку сжатия сжатого файла, но часто приводит к тому, что файл больше оригинала.

Другим его применением является повышение степени сжатия. Например, если вы 'tar' пакет файлов журнала и затем gzip результат, вы, вероятно, придумаете меньший файл, чем если бы вы сначала сжали, а затем в комплекте с 'tar'. И, конечно же, используя tar, вы можете выбрать любой алгоритм сжатия, который вы хотите, и указать параметры для оптимизации сжатия для вашего конкретного случая использования.

Я считаю, что tar 'очень актуальна сегодня, и я предпочитаю использовать ZIP. В нашем офисе у всех с Windows установлен 7-zip, так что для нас tar-файлы полностью совместимы с кросс-платформой.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
4

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

Как я понимаю, есть исторические причины (связанные с историей ОС, патентами «защита», возможностью продавать инструменты для программного обеспечения и т. д.).

Теперь, когда другой ответ указал на то, что даже сейчас tar явно не уступает другим решениям и может быть лучше по другим аспектам, таким как возможность работы с потоками или управление правами Unix.

Если вы читаете статью в википедии о tar , вы можете увидеть еще одну интересную факт. Статья признает некоторые недостатки tar ... но не предлагает используя zip вместо (действительно формат zip не устраняет эти недостатки), но DAR.

Я закончу с личным прикосновением. Несколько раз назад мне приходилось создавать формат файла для хранения зашифрованных данных. Использование tar в качестве основы было удобно (другие сделали тот же выбор, например tar - это формат внутренней компоновки для пакетов .deb). Для меня было очевидно, что попытка сжать данные после того, как шифрование было абсолютно бесполезным, мне пришлось выполнить сжатие как независимый шаг до шифрования, и я не был либо готов использовать шифрование zip (я хотел два ключа шифрования с открытыми и закрытыми ключами) , Используя tar, он работал как бриз.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
3

Я удивлен, что никто не упомянул об этом, но одна из причин - не просто преимущество, а необходимость - для обратной совместимости. В течение десятилетий существует множество систем, работающих под управлением программного обеспечения, которые могут вызвать tar для архивации. Нецелесообразно нанимать кого-то, чтобы «исправить» все старые системы.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
3

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 это `--hope-you-did-try-with-tool-as-switch.

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

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
3

Много хороших ответов, но все они пренебрегают важным фактом. У Tar есть хорошо зарекомендовавшая себя экосистема пользователей и разработчиков в мире, подобном Unix. Это держит его, так же как ZIP хранится в экосистеме DOS /Windows. Наличие такой экосистемы - это то, что поддерживает технологию, а не ее технические преимущества.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
3

Причина - «закрепление в культуре». Есть такие люди, как я, чьи глаза оглядываются, если их просят обработать что-либо кроме сжатого tar-архива или случайного ZIP-файла, если он появился из мира Windows.

Я не хочу слышать про 7-Zip, RAR или что-то еще. Если мне нужно установить программу для распаковки файла, это будет работать. Я сделаю это, если это приведет к тому, что я заплачу, или если контент является чем-то, что я «должен иметь» и не доступен каким-либо другим способом.

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

Реальный вопрос: почему некоторые люди так одержимы сохранением еще одного байта пространства, что они просят всех остальных тратить время на установку какой-то экзотической утилиты и научиться ее использовать? И тогда есть глупое использование экзотических форматов сжатия и архива. Предоставляет видео H.264 с AAC звук действительно должен быть помещен в многочастный RAR?

Формат tar может быть старым, но он сохраняет все, что имеет значение: содержимое файла, пути, временные метки, разрешения и права собственности. Он хранит не только символические ссылки, но и сохраняет жесткую структуру ссылок. Он также хранит специальные файлы, поэтому ленточный архив может использоваться для таких вещей, как миниатюрный каталог /dev , который используется во время начальной загрузки. Вы можете поместить дистрибутив Linux вместе, бинарный формат пакета которого состоит из ничего, но tarballs, которые несжаты относительно корня файловой системы.

ответил allquixotic 14 MarpmThu, 14 Mar 2013 21:09:26 +04002013-03-14T21:09:26+04:0009 2013, 21:09:26
2

Непосредственно отвечая на заданные вами вопросы:

  

Существует ли штраф за исполнение во время   стадии агрегации /сжатия /декомпрессии для использования tar   инкапсулированный в gzip или bzip2, по сравнению с использованием формата файла   что делает агрегацию и сжатие в одной и той же структуре данных?   Предположим, что время выполнения сравниваемого компрессора идентично (например,   gzip и Deflate похожи).

В общем случае существует определенное улучшение производительности с использованием tar , особенно с встроенной библиотекой сжатия (код tar xvzf или tar xvjf style, где используется библиотека сжатия, а не второй процесс). Это происходит из-за двух основных причин:

  • при обработке большого количества относительно небольших файлов, особенно тех, которые обычно используются в распространении программного обеспечения, существует высокая избыточность. Сжатие по многим файлам приводит к более высокому общему сжатию, чем сжатие отдельных файлов. И «словарь» вычисляется один раз для каждого фрагмента ввода, а не для каждого файла.

  • tar понимает файловые системы. Он предназначен для сохранения и восстановления работоспособной /работоспособной операционной системы. Он глубоко понимает, что важно в файловой системе UNIX, и верно захватывает и восстанавливает это. Другие инструменты ... не всегда, особенно семейство zip, которое лучше всего предназначено для обмена файлами между семейством ОС, где документ - важная вещь, а не верная копия, чувствительная к ОС.

  

Существуют ли особенности формата tar-файла, которые используются в других форматах файлов,   таких как .7z и .zip, не имеют?

Обработка разреженных файлов. Некоторые из прямых библиотек баз данных полагаются на разреженные файлы - файлы, где данные номинально являются ГБ, но фактические данные, записанные и хранящиеся, намного, а тем более, и фактически используются только несколько блоков диска. Если вы используете не подозревающий инструмент, то при распаковке вы получаете массовое потребление блоков диска, все из которых содержат нули. Обращение в редкий файл - это ... больно. Если у вас даже есть место для этого. Вам нужен инструмент, который захватывает то, что такое разреженный файл, и уважает это.

Метаданные. На протяжении многих лет Unix развивала некоторые странные вещи. 14 символьных имен файлов, длинных имен файлов, ссылок на ссылки, липких битов, битов суперпользователя, прав доступа наследуемых групп и т. Д. Tar понимает и воспроизводит их. Инструменты обмена файлами ... не так много. Многие люди не используют ссылки так, как они могли бы ... Если вы когда-либо работали с программным обеспечением, использующим ссылки, а затем использовали инструмент, не предназначенный для резервного копирования и восстановления, теперь у вас много независимых файлы, а не один файл со многими именами. Боль. Ваше программное обеспечение терпит неудачу, и у вас есть раздувание диска.

  

Так как tar является таким старым файловым форматом и существуют более новые форматы файлов   сегодня, почему tar (инкапсулирован в gzip, bzip2 или даже новый   xz), который так широко используется сегодня в GNU /Linux, Android, BSD и других   таких операционных систем UNIX, для передачи файлов, источника программы и   бинарных загрузок, а иногда даже в формате диспетчера пакетов?

tar работает. Это делает работу, для которой она предназначена, ну. Были и другие распространенные замены ( cpio , pax и т. Д. И т. Д.). Но tar установлен почти во всем, а используемые им libs-сжатия также очень распространены по другим причинам. Ничего другого не произошло, что существенно превосходит то, что делает дег. Без явных преимуществ и большого количества встроенного использования и знаний в сообществе замена не будет. На протяжении многих лет Тар имел много пользы. Если мы получим серьезные изменения в способе, которым мы думаем о файловых системах, или нетекстовые файлы каким-то образом становятся способом передачи кода (в настоящее время не представляете, как, но игнорируйте это ...), тогда вы можете найти другой инструмент. Но тогда это будет не тот тип ОС, который мы сейчас используем. Это было бы по-другому, организовано по-разному, и для этого нужны свои «собственные инструменты».

Самый важный вопрос, на мой взгляд, который вы не спрашивали, - это то, что рабочие места «tar» плохо подходят.

tar с сжатием является хрупким. Вам нужен весь архив, бит для бит. По моему опыту, он не устойчив. У меня были однократные ошибки, из-за чего многосекционные архивы становятся непригодными. Он не предусматривает избыточности для защиты от ошибок (что может победить один из вопросов, которые вы задали, об уплотнении данных). Если есть вероятность повреждения данных, тогда вам нужна проверка ошибок с избыточностью, чтобы вы могли восстановить данные. Это означает, по определению, что вы не максимально сжаты. Вы не можете оба иметь каждый бит данных, необходимых и нести его максимальное значение значения (максимальное сжатие), и каждый бит данных способен к потере и восстановлению (избыточность и исправление ошибок). Итак ... Какова цель вашего архива? tar отлично справляется с высокой степенью надежности и когда архивмогут быть воспроизведены из источника снова. IME, это на самом деле хуже в оригинальной вещи, о которой говорят его имена, - архивировании на магнитной ленте. Одиночные битовые ошибки на ленте (или, что еще хуже, однобитовые ошибки в головке ленты, где вы теряете один бит в каждом байте всю ленту или архив) приводят к тому, что данные становятся непригодными. При достаточной избыточности и обнаружении ошибок и коррекции вы можете пережить любую из этих проблем.

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

tar с сжатием также не очень хорошо работает с предварительно сжатыми файлами. Если вы отправляете уже сжатые данные ... просто используйте tar, и не беспокойтесь о стадии сжатия - он просто добавляет циклы процессора, чтобы не много. Это означает, что вам нужно знать, что вы отправляете и почему. Если вам все равно. Если вас не волнуют эти особые случаи, то tar будет точно копировать данные вокруг, и сжатие будет точно fail делать много полезного, чтобы сделать его меньше. Нет большой проблемы, кроме некоторых циклов процессора.

ответил JezC 19 PM000000120000002731 2014, 12:50:27
-3

TAR - это ленточный архив. Он существует уже много десятилетий, и он широко используется и поддерживается. Это зрелый продукт и заботится о текущих потребностях, а также о старых.

ответил JezC 19 PM000000120000002731 2014, 12:50:27

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132