7z

7z — формат сжатия файлов в архив, поддерживающий несколько различных алгоритмов сжатия, шифрования и предварительной обработки данных. Формат 7z изначально был выпущен как архиватор 7-Zip. Программа 7-Zip общедоступна в соответствии с условиями GNU Lesser General Public License. LZMA SDK 4.62 был размещён в открытом доступе в декабре 2008 года. Последняя стабильная версия 7-Zip и LZMA SDK — версия 21.07.

7z
Расширение .7z[1]
MIME-тип application/x-7z-compressed[2]
Сигнатура '7', 'z', 0xBC, 0xAF, 0x27, 0x1C
Разработчик Павлов, Игорь Викторович[d]
Опубликован 1999[3]
Тип формата Сжатие данных
Открытый формат? Да: GNU Lesser General Public License
Сайт 7-zip.org/7z.html

Спецификация формата файла 7z распространяется с исходным кодом 7-Zip. Спецификацию можно найти в текстовом формате в подкаталоге 'doc' дистрибутива исходного кода.

Особенности и улучшения

Формат 7z обеспечивает следующие основные функции:

  • Открытая модульная архитектура, которая позволяет использовать любой метод сжатия, преобразования или шифрования.
  • Высокие коэффициенты сжатия (в зависимости от используемого метода сжатия).
  • AES 256 битное шифрование.
  • Поддержка больших файлов (примерно до 16 эксбибайт, или 264 байта).
  • Имена файлов Unicode.
  • Поддержка сплошного сжатия, при котором несколько файлов одинакового типа сжимаются в одном потоке, чтобы использовать объединённую избыточность, присущую аналогичным файлам.
  • Сжатие и шифрование заголовков архива.
  • Поддержка архивов, состоящих из нескольких частей: например, xxx.7z.001, xxx.7z.002, … (см. Пункты контекстного меню «Разделить файл …», чтобы создать их, и « Объединить файлы …», чтобы повторно собрать архив из набор многокомпонентных файлов компонентов).
  • Поддержка пользовательских библиотек плагинов кодеков.

Открытая архитектура формата позволяет добавлять в стандарт дополнительные будущие методы сжатия.

Методы сжатия

В настоящее время определены следующие методы сжатия:

  • LZMA — вариант алгоритма, использующий словарь объёмом до 4 ГБ. За этапом LZ следует энтропийное кодирование с использованием интервального кодирования на основе цепей Маркова и двоичных деревьев.
  • LZMA2 — модифицированная версия LZMA, это сжатие обеспечивающее лучшую поддержку многопоточности и меньшее расширение несжимаемых данных.
  • Bzip2 — стандартный алгоритм преобразования Берроуза-Уилера. Bzip2 использует два обратимых преобразования; BWT, затем Move-To-Front с кодированием Хаффмана для уменьшения символов (фактический элемент сжатия).
  • PPMd — PPMdH Дмитрия Шкарина 2002 года (PPMII / cPPMII) с небольшими изменениями: PPMII — улучшенная версия алгоритма сжатия PPM 1984 года (прогнозирование путем частичного сопоставления).
  • DEFLATE — стандартный алгоритм, основанный на кодировании LZ77 32 кБ и кодировании Хаффмана. Deflate встречается в нескольких форматах файлов, включая ZIP, gzip, PNG и PDF. 7-Zip содержит кодер DEFLATE с нуля.

Набор инструментов повторного сжатия, называемый AdvanceCOMP, содержит копию кодера DEFLATE из реализации 7-Zip; Эти утилиты можно использовать для дальнейшего сжатия размера существующих файлов gzip, ZIP, PNG или MNG.

Фильтры предварительной обработки

LZMA SDK поставляется с включенными препроцессорами BCJ и BCJ2, так что на более поздних этапах может достигаться большее сжатие: для процессоров x86, ARM, PowerPC (PPC), IA-64 Itanium и ARM Thumb цели перехода «нормализованы» до сжатия путем изменения относительного положения в абсолютные значения. Для x86 это означает, что ближние переходы, вызовы и условные переходы (но не короткие переходы и условные переходы).

  • BCJ — конвертер для 32-битных файлов x86.
  • BCJ2 — препроцессор для 32-битных файлов x86. BCJ2 является улучшением BCJ, добавляя дополнительную обработку команд перехода / вызова x86. Ближний прыжок, ближний вызов, условные ближние прыжки цели разделяются и сжимаются отдельно в другом потоке.
  • Дельта-кодирование — дельта-фильтр, базовый препроцессор для мультимедийных данных.

Подобная исполняемая технология предварительной обработки включена в другое программное обеспечение; RAR компрессор оснащен смещения сжатия для 32-разрядных x86 исполняемых файлов и IA-64 исполняемых файлов, а UPX выполнения компрессор исполняемых файлов включает в себя поддержку для работы с 16-битными значениями в пределах DOS-бинарных файлов.

Шифрование

Формат 7z поддерживает шифрование по алгоритму AES с 256-битным ключом. Ключ генерируется из предоставленной пользователем парольной фразы с использованием алгоритма, основанного на хэш-функции SHA-256. SHA-256 выполняется 2 18 (262144) раз, что вызывает значительную задержку на низкопроизводительных ПК перед началом сжатия или извлечения. Этот метод называется растягиванием клавиш и используется для более сложного поиска парольной фразы. Текущие атаки на основе графического процессора и пользовательские аппаратные средства ограничивают эффективность этого конкретного метода растяжения ключа. поэтому все ещё важно выбрать надежный пароль. Формат 7z позволяет шифровать имена файлов архива 7z.

Форматы

Формат 7z не хранит разрешения файловой системы (например, разрешения владельца / группы UNIX или списки ACL NTFS) и, следовательно, может не подходить для целей резервного копирования / архивирования. Обходной путь в UNIX-подобных системах для этого необходимо преобразовать данные в поток битов tar перед сжатием в 7z. Но стоит отметить, что GNU tar (распространенный во многих средах UNIX) также может сжимать с помощью алгоритма LZMA без использования 7z, и что в этом случае предложенный. Расширение файла для архива — «.tar.lzma» (или просто «.tlz»), а не «.tar.7z». С другой стороны, важно отметить, что tar не сохраняет кодировку файловой системы, что означает, что сжатые tar-файлы имена файлов могут стать нечитаемыми, если они распакованы на другом компьютере. Также можно использовать LZMA2, запустив его через инструмент xz. Последние версии GNU tar поддерживают -Jкоммутатор, который запускает TAR через XZ. Расширение файла: «.tar.xz» или «.txz». Этот метод сжатия был принят во многих дистрибутивах для упаковки, таких как Arch Linux, Debian (deb), Fedora (rpm) и Slackware.

Формат 7z не позволяет извлекать некоторые «испорченные файлы». Например, если у вас есть первый сегмент серии файлов 7z, 7z не может дать начало файлам внутри архива — он должен ждать, пока все сегменты загружены. В формате 7z также отсутствуют записи о восстановлении, что делает его уязвимым для деградации данных, если только он не используется совместно с внешними решениями, такими как архивы, или внутри файловых систем с надёжным исправлением ошибок. Для сравнения, в zip-файлах также отсутствует функция восстановления.

Примечания

Ссылки

7-zip.org/7z.html — официальный сайт 7z

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.