24

В общем, я заметил следующее:

  • Файлы и инструменты Linux-y используют bzip2 или gzip для распространения архивов
  • Windows-ы файлы или инструменты используют ZIP для распространения архивов
  • Многие люди используют 7-Zip для создания и распространения своих собственных архивов.

Вопросы:

  • Каковы преимущества и недостатки этих форматов, которые кажутся открытыми? Когда / почему я должен выбрать один (скажем, 7-Zip) вместо другого (скажем, ZIP)?
  • Почему вышеупомянутая тенденция, кажется, сохраняется, хотя все это переносимые форматы? Есть ли какие-то конкретные преимущества использования определенного формата архива на конкретной платформе?

6 ответов6

16

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

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

Различные особенности и соображения включают в себя:

  • Способность к сжатию - Достаточно ли сильно сжимает файл?
  • Простота использования - если файл передается другому пользователю, архив будет легко распаковать или потребуется установить больше программного обеспечения?
  • Защита паролем и / или шифрование. Требуются ли эти меры безопасности?
  • Поддержка нескольких томов - если целевой носитель требует, чтобы файл был разбит на соответствующие куски, формат поддерживает это элегантно. Например, 650 МБ на CD.
  • Восстановление и восстановление. Если файл частично поврежден, предлагает ли он запись для восстановления данных?
  • Поддержка Unicode - Поддерживает ли архиватор международные имена файлов или только стандартный ASCII?
  • Системные требования. Современные компрессоры, такие как 7-Zip , предлагают возможность повысить эффективность сжатия, используя больший словарь (словарь является ссылкой на часто повторяющиеся данные в сжатом файле), но это, в свою очередь, увеличивает потребление памяти как при сжатии, так и при сжатии. время декомпрессии.
  • Поддержка самораспаковки - можно ли свернуть архив в исполняемый файл, который обеспечивает удобство использования для тех, кто в нем нуждается? (Также имейте в виду, что вы можете создать самораспаковщик только для одной платформы. Вообще говоря, самораспаковщик Windows не будет работать в Linux по умолчанию, если только он не проходит через слой совместимости, такой как Wine).
  • Атрибуты файловой системы - хранит ли компрессор соответствующие метаданные и разрешения файловой системы, которые, возможно, стоит сохранить в момент извлечения?

Вообще говоря, ZIP является наиболее распространенным форматом, но размеры более 4 ГБ, как правило, не поддерживаются (если вообще), поддержка безопасности обычно считается плохой (стандартный пароль может быть скомпрометирован с помощью атаки обычным текстом, и дальнейшее шифрование обычно реализуется в качестве неофициального производного формата коммерческими поставщиками программного обеспечения ZIP).

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

Мой личный выбор - 7-Zip, так как он имеет отличное и гибкое сжатие; несмотря на то, что он имеет своеобразный пользовательский интерфейс в Windows. Есть декомпрессоры для Linux и Mac OS X (хотя они не основаны на графическом интерфейсе).

8

Одна вещь, которая приходит на ум, - это (двухлетнее) сообщение в блоге от Джеффа Этвуда: Сжатие файлов в эпоху многоядерности. В этой статье он обнаруживает, что bzip2 превосходит 7-zip, когда работает более двух ядер.

4

Для вас первый вопрос, 7-Zip - это архиватор, который может использовать множество алгоритмов для сжатия и распаковки данных.

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

4

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

  • Архивы .tar.gz и tar.bz2 идеально подходят для использования в системах Linux (и, соответственно, для обмена файлами с пользователями Linux), поскольку инструменты tar, gzip и bzip2 в основном распространены на платформе, а также потому, что формат .tar имеет полный поддержка разрешений Unix и других специфичных для платформы свойств. Выбор между gzip и bzip2 для сжатия архива tar - это, в основном, решение относительно скорости сжатия в сравнении с коэффициентом сжатия, поскольку bzip2 предоставляет файлы меньшего размера, но с гораздо меньшей скоростью сжатия. Недостатки этих форматов включают в себя меньшую совместимость с Windows и (потенциальную) необходимость распаковывать весь архив для извлечения одного файла.

  • ZIP-архивы могут быть извлечены на большинстве платформ с использованием встроенных инструментов, поэтому это идеальный выбор для отправки архива нетехническому пользователю, который не хочет устанавливать стороннее программное обеспечение для архивирования, такое как 7-Zip. Уровень сжатия не так хорош, как у более продвинутых алгоритмов, и он не поддерживает разрешения Unix, но это отличный формат, если вы хотите, например, отправить архив фотографий из отпуска вашей бабушке. ZIP также обеспечивает базовую защиту паролем и может быстро извлечь файл из любого места в архиве.

  • 7-Zip хорош, если вы хотите наилучшие из возможных коэффициентов сжатия. Как и ZIP, он не поддерживает права доступа к файлам Unix или права собственности, а также не устанавливается по умолчанию на большинстве платформ, что делает его немного более удобным в использовании, но может оказаться полезным в Windows, если важны коэффициенты сжатия. В среде полностью Linux было бы лучше использовать инструменты сжатия 'xz' или 'lzma' вместе с tar, которые работают точно так же, как 'gzip' и 'bzip2', но используют более продвинутый алгоритм LZMA, такой как 7 -Zip.

2

В качестве примера я использую упомянутые форматы в следующих случаях:

  • Текстовые файлы (особенно логи): bz2
  • Коллекция файлов для распространения (например, исходный код): gz (tar.gz действительно).
  • Ассорти из файлов: 7zip. Я могу сжать почти все очень эффективным способом. Кроссплатформенное, открытое, стабильное, легковесное шифрование файлов (заголовков и данных), ... Можете ли вы попросить что-нибудь еще? :)

Я вообще избегаю RAR , и всякий раз, когда я получаю RAR-файл от кого-то, кого я знаю, я говорю ему / ей прекратить использование этого формата, поскольку он является проприетарным, и что он, вероятно, использует нелицензионное программное обеспечение (большинство людей загружают пробную версию WinRAR и продолжают использовать это навсегда).

PS: я использую Ubuntu (в основном) и Windows (как с двойной загрузкой, так и с VirtualBox).

1

Есть по крайней мере четыре отдельных задания, которые часто путают друг с другом, потому что популярные инструменты интегрируют их:

  1. Архивирование: возможность объединять несколько файлов (включая метаданные) в один файл, сохраняя как можно больше вещей. В мире Linux/Unix архивирование традиционно осуществляется в формате файлов TAR.
  2. Сжатие: способность без потерь минимизировать размер потока двоичных данных. В мире Linux/Unix это традиционно делают GZip и BZip2.
  3. Шифрование: возможность шифрования данных ключами
  4. Контрольная сумма: способность обнаруживать (и, возможно, исправлять) ошибки.

Повсеместное распространение .tar.gz и .tar.bz соответствует философии Unix, заключающейся в том, что небольшие инструменты хорошо выполняют одну работу, а не один инструмент, который делает все. Формат файла TAR не поддерживает сжатие или шифрование, но он может быть сжат любым другим компрессором (включая .tar.zip или .tar.7z). Работа GZip и BZip2 состоит в том, чтобы просто сжимать поток файлов в другой файловый поток. Слой сжатия не должен заботиться о том, как сохранить метаданные, шифрование или контрольную сумму. Однако со временем в программе tar было сделано несколько ярлыков для более удобной работы с компрессором.

В формате файлов zip и 7z эти отдельные задания выполняются одной программой в одном формате суперфайлов.

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .