Непосредственно отвечая на конкретные вопросы, которые вы задали:
Существует ли снижение производительности на этапах агрегации / сжатия / распаковки для использования tar, инкапсулированного в gzip или bzip2, по сравнению с использованием формата файла, который выполняет агрегацию и сжатие в одной и той же структуре данных? Предположим, что время работы сравниваемого компрессора одинаково (например, gzip и Deflate похожи).
В некоторых случаях наблюдается конкретное улучшение производительности, tar
особенно при использовании встроенной библиотеки сжатия ( командные строки tar xvzf
или tar xvjf
стиль, где используется библиотека сжатия, а не второй процесс). Это происходит от двух основных причин:
при обработке большого количества относительно небольших файлов, особенно тех, которые обычно используются при распространении программного обеспечения, существует высокая избыточность. Сжатие во многих файлах приводит к более высокому общему сжатию, чем сжатие отдельных файлов. И «словарь» вычисляется один раз для каждого блока ввода, а не для каждого файла.
tar
понимает файловые системы. Он предназначен для сохранения и восстановления работающей / работоспособной операционной системы. Он глубоко понимает, что именно важно в файловой системе UNIX, и точно фиксирует и восстанавливает это. Другие инструменты ... не всегда, особенно семейство zip, которое лучше предназначено для совместного использования файлов в семействе ОС, где важен документ, а не точная копия, чувствительная к ОС.
Существуют ли какие-либо особенности формата файлов tar, которых нет в других форматах файлов, таких как .7z и .zip?
Разреженная обработка файлов. Некоторые из прямых библиотек баз данных полагаются на разреженные файлы - файлы, в которых данные номинально являются ГБ, но фактических записанных и сохраненных данных намного, намного меньше, и фактически используется только несколько блоков диска. Если вы используете незнакомый инструмент, то при декомпрессии вы получите огромное потребление дисковых блоков, все с нулями. Превратить это обратно в редкий файл ... больно. Если у вас даже есть комната, чтобы сделать это. Вам нужен инструмент, который понимает, что такое разреженный файл, и уважает его.
Метаданные. Unix развил некоторые странные вещи за эти годы. 14-символьные имена файлов, длинные имена файлов, ссылки sym-ссылок, липкие биты, биты суперпользователя, унаследованные права доступа к группе и т. Д. Tar понимает и воспроизводит их. Инструменты для обмена файлами ... не так много. Многие люди используют ссылки не так, как могли бы ... Если вы когда-либо работали с программным обеспечением, которое использует ссылки, а затем использовали неосведомленный инструмент для резервного копирования и восстановления, теперь у вас есть много независимых файлы, а не один файл со многими именами. Боль. Ваше программное обеспечение дает сбой, и у вас есть раздувание диска.
Поскольку tar является таким старым форматом файлов, и сегодня существуют новые форматы файлов, почему tar (независимо от того, инкапсулирован ли он в gzip, bzip2 или даже в новый xz) все еще так широко используется сегодня в GNU / Linux, Android, BSD и других подобных UNIX операционные системы, для передачи файлов, исходного кода программы и бинарных загрузок, а иногда даже в формате менеджера пакетов?
tar
работает. Это делает работу, для которой это разработано, хорошо. Там были другие рекламируемые замены ( cpio
,pax
и т.д., и т.д.). Но tar установлен практически на все, и библиотеки сжатия, которые он использует, также очень распространены по другим причинам. Ничего другого не произошло, что существенно превосходит то, что делает смола. Без явных преимуществ, большого количества встроенного использования и знаний в сообществе замены не будет. Тар много лет использовался. Если мы получим серьезные изменения в том, как мы думаем о файловых системах, или нетекстовые файлы каким-то образом станут способом передачи кода (в настоящее время не могу себе представить, как, но проигнорируйте это ...), тогда вы можете найти другой инструмент. Но тогда это будет не тот тип ОС, который мы сейчас используем. Это было бы по-другому, организовано по-другому, и для этого потребовались бы свои собственные инструменты.
Я думаю, что самый важный вопрос, который вы не задавали, заключается в том, для каких рабочих мест «тар» не подходит.
tar
с компрессией хрупкий. Вам нужен весь архив, бит за битой. По моему опыту, это не устойчиво. У меня были ошибки в одном бите, в результате чего архивы из нескольких частей стали непригодными для использования. Он не вводит избыточность для защиты от ошибок (что может решить один из заданных вами вопросов о сжатии данных). Если существует вероятность повреждения данных, вам нужна проверка ошибок с избыточностью, чтобы вы могли восстановить данные. По определению это означает, что вы не максимально сжаты. Вы не можете иметь оба бита данных, которые требуются и несут максимальное значение (максимальное сжатие), и каждый бит данных может быть потерян и восстановлен (избыточность и исправление ошибок). Итак ... какова цель вашего архива?tar
отлично подходит для сред с высокой надежностью и когда архив может быть снова воспроизведен из исходного кода. ИМХ, на самом деле хуже оригинальной вещи, которую предлагают ее названия - архивирование на магнитной ленте. Однобитовые ошибки на ленте (или, что еще хуже, однобитовые ошибки в головке ленты, когда вы теряете один бит на каждый байт всей ленты или архива), приводят к невозможности использования данных. При достаточной избыточности, обнаружении и исправлении ошибок вы можете пережить любую из этих проблем.
Итак ... сколько шума и искажений в среде, которую вы просматриваете, и можно ли использовать источник для восстановления поврежденного архива? Ответ, который вы указали, заключается в том, что система не шумит, и этот источник способен восстановить архив. В каком случае tar
это адекватно.
tar
с компрессией также плохо работает с предварительно сжатыми файлами. Если вы отправляете уже сжатые данные ... просто используйте tar и не беспокойтесь о стадии сжатия - он просто добавляет циклы ЦП, чтобы сделать немного. Это означает, что вам нужно знать, что вы отправляете и почему. Если тебе не все равно. Если вас не волнуют эти особые случаи, то tar точно скопирует данные, а сжатие не сможет сделать много полезного, чтобы уменьшить его. Нет большой проблемы, кроме некоторых циклов процессора.
tar xvzf
7z -x