7z: Формат архивов, сжатие, шифрование и особенности использования.
7z
7z – формат архивации с высокой степенью сжатия, шифрованием и алгоритмами обработки данных. Бесплатный, с открытым исходным кодом (GNU LGPL). Версия 23.01.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Семейство форматов архивных файлов, используемых 7-Zip.
Family of archive file formats used by 7 Zip
7z – это сжатый архивный формат файлов, поддерживающий несколько различных алгоритмов сжатия данных, шифрования и предварительной обработки. Формат 7z впервые появился в реализации архиватора 7-Zip. Программа 7-Zip находится в открытом доступе на условиях лицензии GNU Lesser General Public License. LZMA SDK 4.62 был передан в общественное достояние в декабре 2008 года. Последняя стабильная версия 7-Zip и LZMA SDK – версия 23.01. Предпринимались и другие попытки сторонними разработчиками создать более подробную документацию на основе опубликованного кода.
7z is a compressed archive file format that supports several different data compression, encryption and pre processing algorithms. The 7z format initially appeared as implemented by the 7 Zip archiver. The 7 Zip program is publicly available under the terms of the GNU Lesser General Public License. The LZMA SDK 4.62 was placed in the public domain in December 2008. The latest stable version of 7 Zip and LZMA SDK is version 23.01. There have been additional third party attempts at writing more concrete documentation based on the released code.
Фильтры для предварительной обработки
LZMA SDK поставляется с предустановленными препроцессорами BCJ и BCJ2, что позволяет последующим этапам достигать более высокой степени сжатия. Для процессоров x86, ARM, PowerPC (PPC), IA 64 Itanium и ARM Thumb, адреса переходов "нормализуются", что приводит к значительной задержке на медленных компьютерах перед началом сжатия или распаковки. Эта техника называется растяжкой ключа и используется для затруднения подбора пароля методом грубой силы. Современные атаки с использованием графических процессоров и специализированного оборудования снижают эффективность этого конкретного метода растяжки ключа, поэтому по-прежнему важно выбирать надежный пароль. Формат 7z предоставляет возможность шифрования имен файлов в архиве 7z.
The LZMA SDK comes with the BCJ and BCJ2 preprocessors included, so that later stages are able to achieve greater compression: For x86, ARM, PowerPC (PPC), IA 64 Itanium, and ARM Thumb processors, jump targets are 'normalized' which causes a significant delay on slow PCs before compression or extraction starts. This technique is called key stretching and is used to make a brute force search for the passphrase more difficult. Current GPU based, and custom hardware attacks limit the effectiveness of this particular method of key stretching, so it is still important to choose a strong password. The 7z format provides the option to encrypt the filenames of a 7z archive.
Ограничения
Формат 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 обладает такой функцией.
The 7z format does not store filesystem permissions (such as UNIX owner/group permissions or NTFS ACLs), and hence can be inappropriate for backup/archival purposes. A workaround on UNIX like systems for this is to convert data to a tar bitstream before compressing with 7z. But GNU tar (common in many UNIX environments) can also compress with the LZMA2 algorithm ("xz") natively, without the use of 7z, using the " J" switch. The resulting file extension is ". tar. xz" or ". txz" and not ". tar.7z". This method of compression has been adopted with many distributions for packaging, such as Arch, Debian (deb), Fedora (rpm) and Slackware. (The older "lzma" format is less efficient.) On the other hand, it is important to note, that tar does not save the filesystem encoding, which means that tar compressed filenames can become unreadable if decompressed on a different computer. The 7z format does not allow extraction of some "broken files"—that is (for example) if one has the first segment of a series of 7z files, 7z cannot give the start of the files within the archive—it must wait until all segments are downloaded. The 7z format also lacks recovery records, making it vulnerable to data degradation unless used in conjunction with external solutions, like parchives, or within filesystems with robust error correction. By way of comparison, zip files also lack a recovery feature while the rar format has one.