What are Solid Archives?
In a solid archive, files are compressed together as one continuous block:- All files are treated as a single data stream
- Compression dictionary is shared across files
- Similar data patterns across files are efficiently compressed
- Maximum compression ratio is achieved
Solid vs Non-Solid
| Feature | Solid Archive | Non-Solid Archive |
|---|---|---|
| Compression ratio | Excellent (10-50% better) | Good |
| Random access | Slower | Fast |
| Update speed | Slower | Fast |
| Memory usage | Higher | Lower |
| Best for | Backups, distribution | Frequent updates |
Creating Solid Archives
Solid mode is enabled by default for 7z archives. Use
-ms=off to disable it.Solid Block Size
You can control the solid block size for better balance between compression and access speed:Choosing Block Size
- Small blocks (1-16 MB)
- Medium blocks (64-512 MB)
- Large blocks (1GB+)
Best for: Archives with frequent random access
- Faster extraction of individual files
- Lower memory usage
- Slightly worse compression
Compression Example
Non-Solid Archive
file1.txt→ LZMA → compressed block 1file2.txt→ LZMA → compressed block 2file3.txt→ LZMA → compressed block 3
Solid Archive
file1.txt+file2.txt+file3.txt→ LZMA → compressed block
Compression improvement example:
- 1000 text files (1 KB each) = 1 MB total
- Non-solid: ~400 KB (40% compression)
- Solid: ~100 KB (90% compression)
Memory Requirements
Solid compression requires more memory:Compression Memory
- Non-solid: ~100 MB
- Solid: ~1.2 GB
Decompression Memory
- Dictionary: 64 MB
- Solid block: 512 MB
- Required memory: ~576 MB
Extraction Performance
Extracting Single File
Non-solid:Extracting All Files
Both solid and non-solid have similar performance when extracting all files:Solid Archive Organization
By File Type
Organize files by type for better compression:By Extension
Use solid groups to compress similar files together:Custom Sorting
Solid Archives with Filters
Combine solid compression with BCJ filters for executables:Best Practices
Advanced Examples
Maximum Compression Backup
Partly-Solid Archive
Solid Archive with Header Encryption
Implementation Details
Solid compression in 7-Zip:- Implemented in
CPP/7zip/Archive/7z/7zHandler.cpp - Solid block structure in
CPP/7zip/Archive/7z/7zFolderOutStream.cpp - Memory management in
CPP/7zip/Common/
DOC/readme.txt (lines 36-42):