7z

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

7z
7zip archive icon.svg
Расширение .7z[2]
MIME-тип application/x-7z-compressed[3]
Сигнатура '7', 'z', 0xBC, 0xAF, 0x27, 0x1C
Разработчик Павлов, Игорь Викторович[d]
Опубликован 1999[1]
Тип формата Сжатие данных
Открытый формат? Да: 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