Какой формат архива лучше

от admin

Форматы .tar .zip .gz :Различия и эффективность

Вы наверняка встречали файлы с расширением .tar, .zip или .gz . А знаете ли вы, чем они отличаются, почему мы их используем, и какой формат наиболее эффективен?

Различия между tar, .zip и .gz

Если вам некогда вникать в подробности, то вот краткое и понятное объяснение:

  • .tar — архивный файл без сжатия
  • .zip — (как правило) сжатый архивный файл
  • .gz — файл (архивный или не архивный), который сжали с помощью gzip

История развития архивов

Эта история началась в далёких 70х, как и многое из того, что связано с Unix системой и ей подобными. Морозное январское утро 1979 года ознаменовалось появлением утилиты tar в составе дистрибутива Unix V7.

Утилита tar была разработана для эффективной записи большого количества файлов на магнитные ленты. Большинство современных пользователей Linux незнакомы с ленточными накопителями. Тем не менее, tar архивы (они же tarballs) до сих пор широко используются, когда нужно упаковать несколько файлов или даже древо каталога целиком (или целый «лес» 🙂 в один файл.

Главное, что нужно запомнить о tar файле ― что это просто архив, без сжатия. Другими словами, если вы архивируете 100 файлов по 50kb, то на выходе получите архив размером около 5000kb. Используя только tar, единственное на что можно рассчитывать это экономия пространства за счёт файловой системы. Например, файл длинной 1 байт использует 4kb дискового пространства, а 1000 таких файлов займёт уже 4Mb, а tar архив с этими файлами займёт всего 1Mb.

Стоит отметить, что tar не единственный стандартный инструмент Unix для создания архивов. Программисты вероятно знакомы с форматом ar, так как он используется для создания статических библиотек, которые являются по сути архивами скомпилированных файлов. Но ar позволяет создать архив из чего угодно. Например, пакеты .deb в системе Debian не что иное, как архивы ar. А пакеты mpkg в MacOS X — это cpio архивы, сжатые с помощью gzip. Но эти форматы не стали так популярны у пользователей, как tar. Вероятно, потому что использовать команды tar удобнее и проще.

Архивы — это хорошо, но с началом эры персональных компьютеров, люди поняли, что, сжимая данные можно существенно экономить память. Поэтому, спустя десять лет после появления tar, уже в мир MS-DOS, пришёл формат архива с возможностью сжатия — zip. Наиболее распространённый алгоритм сжатия в zip — это Deflate, который использует алгоритмы LZ77. Формат zip многие годы страдал от обременений патентами компании PKWARE.

В то же время был создан gzip, который также использовал алгоритм LZ77, но для бесплатного использования, не нарушая патент PKWARE.

Gzip создавался только для сжатия файлов, согласно ключевому понятию в философии Unix ― «Делай что-то одно, но делай это хорошо». Таким образом, чтобы создать сжатый архив ― сначала вам нужно создать архив, например с помощью утилиты tar, а после этого сжать его. Так получается файл .tar.gz (иногда сокращается до .tgz, из-за соблюдения давно забытых ограничений в имени файла MS-DOS).

По мере развития компьютерных наук создавались и другие алгоритмы, для более эффективного сжатия. Например реализация алгоритма Барроуза — Уилера в bzip2 (отсылка к .tar.bz2 архивам). Или более новый формат xz, в котором реализован алгоритм LZMA. Этот алгоритм используется в архиваторе 7zip.

Доступность и ограничения

Сегодня вы можете без проблем использовать любой формат архивных файлов как в Linux, так и в Windows.

Благодаря нативной поддержке формата zip в Windows, zip особенно актуален для кроссплатформенного применения. Порой, zip файл можно встретить в неожиданных местах. Например, этот формат использовала компания Sun для архивов JAR, в которых распространяется скомпилированное приложение Java. Файлы OpenDocument (.odf, .odp …) в офисных приложениях, на самом деле являются zip архивами. Если вам интересно, распакуйте один из них и посмотрите, что внутри:

Несмотря на всё вышесказанное, в UNIX-мире я бы предпочёл использовать tar архивы, потому что формат zip недостаточно надёжно поддерживает все метаданные файловой системы Unix. Дело в том, что формат zip определяет лишь небольшой набор обязательных атрибутов файла для каждой записи: имя файла, дата изменения, право доступа. Кроме этих базовых атрибутов, архиватор может хранить и другие метаданные, в дополнительном поле заголовка zip. Но, поскольку дополнительное поле зависит от реализации, нет никаких гарантий, что вы получите тот же набор метаданных, даже в совместимых архиваторах. Давайте проверим это на примере:

Как видите, в дополнительном поле хранится информация о владельце (UID/GID). Если вы умеете читать шестнадцатеричный код, то можно заметить, что в этом архиве используется порядок байтов little-endian (от младшего к старшему) для хранения метаданных. «e803» это «03e8», что означает «1000» ― UID файла. А «07d0» это «d007», что означает «2000» ― GID файла.

В этом конкретном случае инструмент info-ZIP, который я использую в системе Debian, сохранил некоторые полезные метаданные в дополнительном поле. Но это не значит, что любой архиватор запишет те же данные в дополнительном поле. И нет гарантий, что другой архиватор сможет прочитать эти данные.

Таким образом существует две причины, по которым до сих пор используют tarballs. Это либо просто старая привычка, либо те причины, о которых я говорил выше, когда zip не может полностью заменить tar. Особенно если для вас важно сохранить все стандартные метаданные файла.

Тест на эффективность: Tar vs Zip vs Gz

Здесь я сравниваю эффективность сжатия. Я учитываю только сэкономленное пространство, без учёта затраченного времени. Как правило, чем эффективней алгоритм сжатия, тем больше ресурсов ЦП он требует.

Чтобы сравнить эффективность алгоритмов, я использовал файлы в популярных форматах размером около 100Mb. В таблице результаты, которые я получил в системе Debian Stretch (все размеры я узнал командой du -sh):

Во-первых, я призываю отнестись к этим результатам с осторожностью: все эти файлы были на моём жёстком диске, и я не утверждаю, что они являются эталоном для проведения тестов. Должен признаться, я не выбирал эти типы файлов случайным образом. Как уже упоминалось, файлы .odt сами по себе являются zip файлами. Поэтому результат их повторного сжатия был предсказуем (за исключением bzip2 и xz, я бы назвал это статистической аномалией, вызванной низкой неоднородностью моих файлов, содержащих несколько резервных копий или рабочих версий одних и тех же документов).

Что касается .jpg, .mp3 и .mp4 — это форматы, которые уже содержат сжатые данные. Более того, они используют деструктивное сжатие. Другими словами, вы не сможете полностью восстановить изображение после JPEG компрессии. Но вот что менее известно, так это то, что после фазы деструктивного сжатия, данные сжимаются во второй раз с использованием сжатия без потерь, для удаления избыточности данных, алгоритмом переменной длины слова Хаффмана.

Поэтому было предсказуемо, что сжатие JPEG, MP3/MP4 файлов не даст впечатляющих результатов. Обратите внимание, что обычный файл содержит, как сильно сжатые данные, так и не сжатые метаданные, поэтому мы можем ещё чего-то добиться. Это объясняет заметный результат для JPEG, так как их было много. Т.е. размер метаданных был существенным относительно общего размера файлов. Впечатляющие результаты показало сжатие MP4 с использованием xz. Вероятно, это связано с высоким сходством между файлами MP4, которые я использовал для тестов. Или нет?

Сравниваем: какой формат сжатия файлов лучше?

Какие форматы сжатия файлов вы бы использовали? Скорее всего, именно Zip, RAR, 7z, ведь они самые популярные. Было проведено несколько тестов, которые помогут определиться, какой формат сможет дать максимальный уровень сжатия и какой самый удобный в использование.

Стоит заметить, что степень сжатия является не самым главным фактором по тому что некоторые форматы более удобны, или интегрированы в операционную систему, в тоже время другие могут являться частью стороннего программного обеспечения.

Сжатие файлов эталонов популярными архиваторами

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

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

Первой стала Bastion (Бастион), установленная игра имела размер около 863 мегабайт: музыки, графических и исполняемых файлов, плюс ко всему этому разные типы документов и вот что было получено:

  • Zip (Windows 8.1): 746 МБ (86.4% от оригинального размера);
  • Zip (WinZip): 745 МБ (86.3% от оригинального размера);
  • RAR (WinRAR): 746 МБ (86.4% от оригинального размера);
  • 7z(7-Zip): 734 МБ (85 % от оригинального размера).

Следующей для проведения тестирования была выбрана игра Hotline Miami (Горячая линия Маями), которая имела размер 654 Мб:

  • Zip (Windows 8.1): 316 MB (48.3% от оригинального размера)
  • Zip (WinZip): 314 MB (48% от оригинального размера)
  • RAR (WinRAR): 307 MB (46.9% от оригинального размера)
  • 7z (7-Zip): 301 MB (46% от оригинального размера)

Кто же стал лидером файлового сжатия на основе тестов

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

Результаты RAR и Zip были очень близки друг к другу, а для интегрированной в Windows 8.1 WinZip не составит труда открыть формат Zip.
Для максимально сжатия лучше использовать 7-Zip с 7z, а вот для большего удобства и максимальной совместимости лучшим будет создание Zip-файлов, с помощью интегрированного в операционной системе функционала.

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

Читать:
Языки и службы текстового ввода как открыть

Популярные форматы, которые уже интегрированные в операционные системы:

  • Windows: только zip. Эта функция была добавлена ещё во времена Windows XP, скорее всего каждый пользователь системы Windows сможет создавать и извлекать zip файлы.
  • Mac OS X: формат сжатия zip поддерживается, а для прочих форматов архивов как tar, gz, bz2, 7z и rar потребуется установка стороннего программного обеспечения.
  • Linux: Zip поддерживается прямо после установки, да большинство форматов сжатия могут быть использованы, но не без дополнительного программного обеспечения
  • Crome OS: zip и rar поддерживаются, как и tar, gz, tar и bz2, но для этих расширений так же придётся установить дополнительные приложения.

Windows по умолчанию поддерживает только Zip файлы, так как Zip наиболее популярный и универсальный формат, но, если вам приходится работать с Mac или Linux вы, конечно же, можете использовать такой формат сжатия как 7z, но тогда вам придётся установить приложение для его открытия.

Все же если целью является получение лучшего сжатия, то 7z – это путь в правильном направление, а вот если важнее удобство использования как для себя, так и для других, то самым распространённым и как следствие удобным в использование форматом сжатия будет, как написано ранее zip.

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

Тест архивов. Какой формат выбрать?

Эта тема будет посвящена сравнению алгоритмов сжатия. Для владельцев Медленного и Лимитного Интернета будет полезно, да и не только им.

Для сжатия использовался ZArchiver 0.9.5 для Android, настройки всех форматов на Ультра. Указаны Размер и Процент от Размера Оригинала. Для 7Z включён LZMA2 (В настройках ZArchiver)

Под первым Спойлером показаны исходные размеры (Смотрите в нижний левый угол, последняя строка).

Внимание! Много Картинок!

Есть 7 папок, под разные категории

Теперь начнём же сравнение!

1: Образ Windows 3.10

2: Война и мир, FB2

3: Jeanne d’Arc, Rus, PSP

4: 459 игр для NES aka Денди, Rus

5: Исходный код Той Самой Игры — DOOM

6: Прошивка Navitel C500

7: Субтитры для Наруто: Ураганные Хроники! Кто помнит Акацуки и Мадару?

Вот и комментарии
Категория 1: Образ Windows 3.10

Оригинал: 11.25 МБ

Форматы типа «Как у всех» (Далее будет указан как «Тип 1»)

ZIP: 8.89 МБ / 79% // Слабовато.

7Z: 8.05 МБ / 71% // Что и следовало ожидать от 7Z.

Форматы типа «Найди их — тот ещё квест». Кроме TAR.XZ. (Далее будет указан как «Тип 2»)

TAR.LZ4: 9.48 МБ / 84% // Слился от ZIP. Что ещё ожидать от формата, заточенного на скорость. Хотя.

TAR.ZST: 8.38 МБ / 74% // Очень быстрое сжатие и распаковка, размеры в основном между ZIP и 7Z, хотя возможны варианты. Известен как ZStandard или ZSTD

TAR.XZ: 7.70 МБ / 68% // Тот случай, когда 7Z — не самый крутой в области сжатия!

Категория 2: Война и мир, в формате FB2

Оригинал: 9.07 МБ

ZIP: 3.37 МБ / 37% // Перфекционисты могут быть довольны — 37 же!

7Z: 2.96 МБ / 32% // Классика жанра

TAR.LZ4: 4.57 МБ / 50% // LZ4 снова слился.

TAR.ZST: 3.31 МБ / 36% // И снова победа над ZIP!

TAR.XZ: 2.96 МБ / 32% // Тут 7Z и XZ равны.

Категория 3: Игра для PSP — Jeanne d’Arc, русская версия!

Оригинал: 1.16 ГБ

ZIP: 640.14 МБ / 53% // Почти в два раза. Но всё равно — размеры ого-го!

7Z: 459.80 МБ / 38% // Вот это адекватные размеры!

TAR.LZ4: 701.92 МБ / 59% // Такой архив весит многовато.

TAR.ZST: 601.44 МБ / 50% // Архив меньше на

40 МБ, но скорость распаковки. Вы удивитесь, когда начнёте тесты на файлах больше 1 ГБ!

TAR.XZ: 459.80 МБ / 38% // Снова они равны!

Категория 4: Сборник из 459 игр для NES / Денди на русском языке!

Оригинал: 76.44 МБ

ZIP: 38.30 МБ / 50% // Чётко и поровну!

7Z: 34.82 МБ / 45% // 5 Процентов разницы для кого-то могут значит.

TAR.LZ4: 46.15 МБ / 60% // Как всегда.

TAR.ZST: 33.80 МБ / 44% // 7Z гнут даже скоростные форматы!

TAR.XZ: 27.83 МБ / 36% // 7Z уложили на лопатки!

Категория 5: Исходный код Той Самой Игры — DOOM!

Оригинал: 1.36 МБ

ZIP: 440.01 КБ / 31% // Классике всегда будет место!

7Z: 400.31 КБ / 28% // Немного лучше.

TAR.LZ4: 492.36 КБ / 35% // Не удивляйтесь!

TAR.ZST: 323.63 КБ / 23% // И снова 7Z пои. Победили, вот!

TAR.XZ: 273.11 КБ / 19% // Fatality!

Категория 6: Прошивка Navitel C500

Оригинал: 64.93 МБ

ZIP: 47.39 МБ / 72% // Норм

7Z: 40.56 МБ / 62% //Вот так лучше!

TAR.LZ4: 51.56 МБ / 79% // ОК.

TAR.ZST: 44.89 МБ / 69% // Скорость — ваше всё! (Соник согласится)

TAR.XZ: 40.51 МБ / 62% // Тут разница некритична.

Категория 7: Субтитры для Наруто: Ураганные Хроники! Кто помнит Акацуки, Мадару?

Оригинал: 134.00 МБ

ZIP: 32.67 МБ / 24% // Тексты всегда сжимаются на ура!

7Z: 28.46 МБ / 21% // Кто-то сэкономит траффик.

TAR.LZ4: 39.68 МБ / 29% // Даже тексты. Сжимает хуже всего!

TAR.ZST: 19.53 МБ / 14% // 7Z нагибают аж от души!

TAR.XZ: 11.68 МБ / 8% // Ну. у 7Z нет шансов!

Вывод

ZIP средний во всём, кроме сжатия — тут он занимает предпоследнее место!

7Z имеет высокое сжатие и низкую скорость сжатия / распаковки, но иногда его нагибают скоростные форматы, не говоря уже об XZ!

LZ4 до появления ZStandard мог быть пригоден благодаря скорости сжатия / распаковки, но после появления ZStandart его стоит использовать разве то для совместимости.

ZStandard имеет сжатие в основном между ZIP и 7Z, ОЧЕНЬ высокую скорость сжатия / распаковки, а иногда он по сжатию превосходит 7Z!

XZ имеет самое лучшее сжатие и низкую скорость сжатия / распаковки. Шикарный вариант для медленного и лимитного интернета.

Делайте свои выводы.

Спасибо за чтение!

Upd: сделал дополнительные тесты и узнал, что:

1: LZ4 иногда сжимает ЛУЧШЕ, чем ZIP, притом НАМНОГО быстрее даже на ультра настройках!

2: По скорости сжатия / распаковки 1 место занимает LZ4 (Скорость пригодна для Оперативной Памяти), а второе — ZStandard. Учитивая то, что формат создал автор LZ4 для замены алгоритмов на основе Deflate (ZIP, GZIP и т.д.), по скорости и степени сжатия он круче ZIP по всём! Игра для PSP, которую ZIP на Ультрах сжимает десятки минут, ZStandard на тех же настройках делает это за несколько секунд, давая меньший размер! И да, образ Windows XP SP3 особо не сжимается — я пытался. Ещё раз спасибо за чтение!

Какой формат сжатия файлов лучше — 7z, zip или rar?

Какой формат сжатия файлов лучше — 7z, zip или rar?

На днях ко мне обратились с вопросом, какой тип архива лучше всего сжимает файлы? Я уже не раз встречал тесты-сравнения эффективности различных алгоритмов сжатия. Практически всегда в них побеждает 7z. Однако я решил не давать столь однозначный ответ. И вот почему: степень сжатия является не единственным критерием, позволяющим определить лучший тип архива.

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

Маленький тест

И, все же, уменьшение объема файла — это основная функция архиватора. Поэтому я решил провести собственное сравнение алгоритмов. В серьезных тестах обычно испытывается работа архиваторов с файлами разных типов. А в самых продвинутых — еще и подыскивают оптимальные настройки. Я поступлю проще: сжимать буду папку с установленной игрой — ведь в ней находятся разные типы данных: и музыка, и графика, и документация, и исполняемые файлы. Настройки же программ-архиваторов я не буду изменять — именно так поступает большинство пользователей.

Итак, игра Bastion — объем папки 863 МБ:

  • Zip (интегрированный в Windows 8.1) — 746 МБ (86,4% от исходного объема);
  • Zip (WinZip) — 745 МБ (86,3%);
  • RAR (WinRAR) — 746 МБ (86,4%);
  • 7z (7-Zip) — 734 МБ (85%).

Игра Hotline Miami — объем папки 654 МБ:

  • Zip (интегрированный в Windows 8.1) — 316 МБ (48,3% от исходного объема);
  • Zip (WinZip) — 314 МБ (48%);
  • RAR (WinRAR) — 307 МБ (46,9%);
  • 7z (7-Zip) — 301 МБ (46%).

Таким образом, победителем в соревнованиях на сжатие файла, как я и предполагал, вышел 7z. Но стоит ли выбирать именно этот формат? Я думаю, далеко не всегда.

Интеграция и распространение

В конце концов, 7z не так уж и далеко вырвался вперед. Zip и RAR, буквально, дышат ему в спину. А какой из этих форматов без проблем «переварит» ваш компьютер или система того пользователя, которому вы передадите сжатый файл?

По степени распространенности лидирует Zip. Инструменты для работы с ним интегрированы в Windows и OS X. Большинство дистрибутивов Linux поддерживают Zip из коробки. В Chrome OS сразу после установки мы можем сжимать и распаковывать файлы в форматах Zip и RAR.

А что же 7z? Для работы с ним необходимо скачать и установить отдельное приложение. Пусть даже это и бесплатная программа, но стоит ли 1—2% от объема файла этой возни? А если вы передаете архив человеку, далекому от всего этого, то придется потратить уйму времени, чтобы объяснить ему, как поступить с файлом.

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

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

Похожие статьи