Введение

Семейство форматов архивных файлов, используемых 7-Zip.

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

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

LZMA SDK поставляется с предустановленными препроцессорами BCJ и BCJ2, что позволяет последующим этапам достигать более высокой степени сжатия. Для процессоров x86, ARM, PowerPC (PPC), IA 64 Itanium и ARM Thumb, адреса переходов "нормализуются", что приводит к значительной задержке на медленных компьютерах перед началом сжатия или распаковки. Эта техника называется растяжкой ключа и используется для затруднения подбора пароля методом грубой силы. Современные атаки с использованием графических процессоров и специализированного оборудования снижают эффективность этого конкретного метода растяжки ключа, поэтому по-прежнему важно выбирать надежный пароль. Формат 7z предоставляет возможность шифрования имен файлов в архиве 7z.

Ограничения

Формат 7z не хранит права доступа к файловой системе (такие как права владельца/группы в UNIX или ACL NTFS) и поэтому может быть неподходящим для целей резервного копирования/архивирования. В UNIX-подобных системах можно обойти это ограничение, преобразовав данные в поток tar перед сжатием с помощью 7z. Однако GNU tar (распространенный во многих UNIX-окружениях) также может сжимать данные алгоритмом LZMA2 ("xz") напрямую, без использования 7z, с помощью ключа "J". В результате получается файл с расширением ".tar.xz" или ".txz", а не ".tar.7z". Этот метод сжатия используется многими дистрибутивами для упаковки программ, такими как Arch, Debian (deb), Fedora (rpm) и Slackware. (Более старый формат "lzma" менее эффективен.) Важно также отметить, что tar не сохраняет кодировку файловой системы, что означает, что имена файлов, сжатые с помощью tar, могут стать нечитаемыми при распаковке на другом компьютере. Формат 7z не позволяет извлекать некоторые "поврежденные файлы" – то есть, например, если у вас есть только первый сегмент серии файлов 7z, 7z не сможет извлечь файлы из архива, пока не будут загружены все сегменты. Формат 7z также не содержит записей восстановления, что делает его уязвимым к потере данных, если не использовать его в сочетании с внешними решениями, такими как parchives, или файловыми системами с надежной коррекцией ошибок. Для сравнения, файлы zip также не имеют функции восстановления, в то время как формат rar обладает такой функцией.