Открыть сервис

Формат 7z

7z — это формат сжатия данных, использующий алгоритмы с высоким коэффициентом сжатия и поддерживающий шифрование. Разработанный в 1999 году Игорем Павловым, формат 7z является основным форматом архиватора 7-Zip, распространяемого по лицензии GNU LGPL. Отличается открытой архитектурой, позволяющей использовать различные алгоритмы сжатия, шифрования и фильтрации данных.

История

Разработка формата 7z началась в 1999 году российским программистом Игорем Павловым. Первая версия архиватора 7-Zip, поддерживающего новый формат, была выпущена в 2000 году. Основной целью создания формата было превзойти по степени сжатия популярные на тот момент форматы ZIP и RAR, а также предоставить свободную от лицензионных отчислений альтернативу.

Изначально формат 7z использовал алгоритм LZMA (Lempel-Ziv-Markov chain algorithm), разработанный тем же Павловым. Впоследствии, с выходом версии 9.20 (2010 год), была добавлена поддержка алгоритма LZMA2, который улучшил многопоточное сжатие и обработку несжимаемых данных.

Формат 7z быстро завоевал популярность среди пользователей, ценящих максимальное сжатие, и стал стандартом де-факто для распространения больших объёмов данных в интернете, особенно в среде open-source. В 2011 году формат 7z был включён в список рекомендованных форматов для архивации в стандарте ISO 21320-1, хотя он не является его обязательной частью.

Классификация и виды

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

  • Архивы с LZMA: Используют классический алгоритм LZMA, обеспечивающий высокое сжатие, но с ограниченной поддержкой многопоточности.
  • Архивы с LZMA2: Используют улучшенный алгоритм LZMA2, который лучше масштабируется на многоядерных процессорах и эффективнее обрабатывает данные с низкой сжимаемостью. Является наиболее распространённым вариантом.
  • Архивы с PPMd: Используют алгоритм контекстного моделирования PPMd (Prediction by Partial Matching), который может быть эффективнее LZMA для текстовых данных, но медленнее при распаковке.
  • Архивы с BZip2: Используют алгоритм BZip2, основанный на преобразовании Барроуза-Уилера. Обеспечивает среднюю степень сжатия и скорость.
  • Архивы с шифрованием: Формат 7z поддерживает шифрование по алгоритму AES-256 (Advanced Encryption Standard с длиной ключа 256 бит). Шифрование может применяться как к списку файлов, так и к самим данным.
  • Архивы с фильтрацией: Для улучшения сжатия могут применяться фильтры, такие как BCJ (Branch-Call-Jump) для исполняемых файлов, Delta-фильтр для данных с последовательными изменениями (например, WAV-файлы) или фильтр для текстовых файлов.

Устройство и характеристики

Структура файла

Файл формата 7z имеет следующую структуру:

  1. Заголовок (Signature Header): Содержит сигнатуру формата (байты 37 7A BC AF 27 1C), которая позволяет идентифицировать файл как архив 7z.
  2. Заголовок архива (Archive Header): Содержит метаданные о версии формата, типе используемых алгоритмов, размере блока, контрольных суммах и другую служебную информацию.
  3. Заголовки файлов (File Headers): Описывают каждый файл в архиве: имя, размер, атрибуты, дата модификации, контрольная сумма (CRC32) и метод сжатия.
  4. Блоки данных (Data Blocks): Содержат сжатые данные файлов. Данные могут быть организованы в один или несколько блоков, каждый из которых может использовать свой метод сжатия.

Основные характеристики

  • Степень сжатия: В среднем на 30-50% выше, чем у формата ZIP, и сопоставима с форматом RAR (версии 4 и 5). В некоторых тестах (например, для баз данных или исполняемых файлов) может превосходить RAR.
  • Скорость сжатия: Зависит от выбранного алгоритма и уровня сжатия. LZMA2 на высоких уровнях сжатия может быть медленнее, чем ZIP или RAR, но на низких уровнях (например, «быстрое сжатие») скорость сопоставима.
  • Скорость распаковки: Обычно высокая, особенно для LZMA2. Распаковка происходит быстрее, чем сжатие.
  • Поддержка многопоточности: LZMA2 и PPMd поддерживают многопоточное сжатие и распаковку, что позволяет эффективно использовать многоядерные процессоры.
  • Максимальный размер архива: Теоретически не ограничен (практически — до 2^64 байт, или 16 эксабайт).
  • Максимальное количество файлов: 2^32 (более 4 миллиардов).
  • Шифрование: AES-256 с шифрованием имени файла и содержимого. Поддерживается шифрование заголовка (скрытие списка файлов).
  • Сжатие твёрдых тел (Solid compression): Формат поддерживает сжатие всех файлов в один непрерывный поток данных, что повышает степень сжатия за счёт использования общих закономерностей между файлами. Недостатком является невозможность извлечения отдельных файлов без распаковки всего твёрдого блока.
  • Открытость: Формат является открытым, его спецификация доступна для свободного использования. Это позволяет создавать сторонние реализации для различных операционных систем.

Применение

Формат 7z широко используется в различных областях:

  • Распространение программного обеспечения: Многие дистрибутивы Linux, open-source проекты и программы для Windows распространяются в архивах 7z для экономии трафика и места на диске.
  • Архивация данных: Пользователи используют 7z для создания резервных копий, архивации больших объёмов данных (фотографий, видео, документов) с максимальным сжатием.
  • Обмен файлами: В файлообменных сетях и на торрент-трекерах архивы 7z часто используются для упаковки больших объёмов информации.
  • Хранение баз данных: Для сжатия дампов баз данных (например, SQL) 7z с алгоритмом PPMd может давать очень высокую степень сжатия.
  • Шифрование и защита данных: Благодаря поддержке AES-256, 7z используется для безопасного хранения и передачи конфиденциальной информации.

Примеры

  • Сжатие текстового файла: Текстовый файл размером 10 МБ может быть сжат до 1-2 МБ в формате 7z (LZMA2, уровень сжатия «Максимальный»), в то время как ZIP сожмёт его до 3-4 МБ.
  • Архив с исполняемыми файлами: Дистрибутив программы размером 500 МБ может быть сжат до 150-200 МБ в 7z, что значительно ускоряет его загрузку из интернета.
  • Резервное копирование: Папка с фотографиями (RAW-файлы) размером 50 ГБ может быть сжата до 45-48 ГБ (сжатие фотографий обычно неэффективно), но если в папке есть текстовые документы, базы данных или исполняемые файлы, сжатие будет более существенным.

Интересные факты

  • Формат 7z был создан одним человеком — Игорем Павловым, который также разработал алгоритмы LZMA и LZMA2.
  • Архиватор 7-Zip, использующий формат 7z, является одним из самых популярных бесплатных архиваторов в мире.
  • Формат 7z поддерживается не только 7-Zip, но и многими другими архиваторами, включая WinRAR, WinZip (с версии 12), PeaZip, а также встроенными средствами некоторых операционных систем (например, через пакет p7zip в Linux).
  • Несмотря на свою эффективность, формат 7z не получил такого широкого распространения, как ZIP, из-за отсутствия встроенной поддержки в большинстве операционных систем и веб-браузеров.

Источники

  • Спецификация формата 7z (7z Format Specification) — 7-Zip.org
  • Документация к архиватору 7-Zip (7-Zip Help)
  • Статья «LZMA» в Википедии
  • Тесты сжатия форматов (например, Maximum Compression, Squeeze Chart)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →