Формат 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 имеет следующую структуру:
- Заголовок (Signature Header): Содержит сигнатуру формата (байты
37 7A BC AF 27 1C), которая позволяет идентифицировать файл как архив 7z. - Заголовок архива (Archive Header): Содержит метаданные о версии формата, типе используемых алгоритмов, размере блока, контрольных суммах и другую служебную информацию.
- Заголовки файлов (File Headers): Описывают каждый файл в архиве: имя, размер, атрибуты, дата модификации, контрольная сумма (CRC32) и метод сжатия.
- Блоки данных (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 →