7z

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

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

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

Особенности и улучшения[править | править код]

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

  • Открытая модульная архитектура, которая позволяет использовать любой метод сжатия, преобразования или шифрования.
  • Высокие коэффициенты сжатия (в зависимости от используемого метода сжатия).
  • AES-256-шифрование.
  • Поддержка больших файлов (примерно до 16 exbibytes, или 2 64 байта).
  • Имена файлов 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