7z
Filename extension |
.7z |
---|---|
Internet media type |
application/x-7z-compressed |
exabytes) | |
Developed by | Igor Pavlov[1] |
Initial release | 1999[2] |
Type of format | Data compression |
Open format? | Yes: GNU Lesser General Public License / Public domain |
Website | 7-zip |
7z is a compressed
The official, informal 7z file format specification is distributed with 7-Zip's source code since 2015. The specification can be found in plain text format in the 'doc' sub-directory of the source code distribution.[3] There have been additional third-party attempts at writing more concrete documentation based on the released code.[4]
Features and enhancements
The 7z format provides the following main features:
- Open, modular architecture that allows any compression, conversion, or encryption method to be stacked.
- High compression ratios (depending on the compression method used).
- AES-256 bit encryption.
- Zip 2.0 (Legacy) Encryption
- Large file support (up to approximately 16 exbibytes, or 264 bytes).
- Unicode file names.
- Support for solid compression, where multiple files of like type are compressed within a single stream, in order to exploit the combined redundancy inherent in similar files.
- Compression and encryption of archive headers.
- Support for multi-part archives : e.g. xxx.7z.001, xxx.7z.002, ... (see the context menu items Split File... to create them and Combine Files... to re-assemble an archive from a set of multi-part component files).
- Support for custom codec plugin DLLs.
The format's open architecture allows additional future compression methods to be added to the standard.
Compression methods
The following compression methods are currently defined:
- range coder and binary trees.
- LZMA2 – modified version of LZMA providing better multithreading support and less expansion of incompressible data.[5]
- Move to front with Huffman codingfor symbol reduction (the actual compression element).
- PPM compression algorithm(prediction by partial matching).
- version in compression size, but at the expense of CPU usage.
A suite of recompression tools called AdvanceCOMP contains a copy of the DEFLATE encoder from the 7-Zip implementation; these utilities can often be used to further compress the size of existing
Pre-processing filters
The LZMA SDK comes with the
- BCJ – Converter for 32-bit x86 executables. Normalise target addresses of near jumps and calls from relative distances to absolute destinations.
- BCJ2– Pre-processor for 32-bit x86 executables. BCJ2 is an improvement on BCJ, adding additional x86 jump/call instruction processing. Near jump, near call, conditional near jump targets are split out and compressed separately in another stream.
- Delta encoding – delta filter, basic preprocessor for multimedia data.
Similar executable pre-processing technology is included in other software; the RAR compressor features displacement compression for 32-bit x86 executables and IA-64 executables, and the UPX runtime executable file compressor includes support for working with 16-bit values within DOS binary files.
Encryption
The 7z format supports
Limitations
The 7z format does not store
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
See also
- Comparison of archive formats
- List of archive formats
- Open file format
References
- Dr. Dobb'sData Compression Newsletter. 30 April 2003. Retrieved 26 December 2009.
- ^ a b History of 7-zip changes
- ^ LZMA SDK, "DOC" directory, 7zFormat.txt
- ^ ".7z format specification — py7zr – 7-zip archive library". py7zr.readthedocs.io.
- ^ a b Collin, Lasse. "lzma_.lzma". liblzma bindings. Archived from the original on 8 February 2010. Retrieved 3 January 2010.
Compared to LZMA1, LZMA2 adds support for LZMA_SYNC_FLUSH, uncompressed chunks (smaller expansion when trying to compress uncompressible data), possibility to change lc/lp/pb in the middle of encoding, and some other internal improvements.
- ^ 7-zip source code
- ^ Colin Percival. scrypt. As presented in "Stronger Key Derivation via Sequential Memory-Hard Functions". presented at BSDCan'09, May 2009.
- ^ "GNU tar 1.34: 8.1 Using Less Space through Compression".
Further reading
- Salomon, David (2007). Data compression: the complete reference. Springer. p. 241. ISBN 978-1-84628-602-5.