Solid compression


In computing, solid compression is a method for data compression of multiple files, wherein all the uncompressed files are concatenated and treated as a single data block. Such an archive is called a solid archive. It is used natively in the 7z and RAR formats, as well as indirectly in tar-based formats such as .tar.gz and .tar.bz2. By contrast, the ZIP format is not solid because it stores separately compressed files.

Explanation

Compressed file formats often feature both compression and archiving. One can combine these in two natural ways:
The order matters, and the latter is solid compression.
In Unix, compression and archiving are traditionally separate operations, which allows one to understand this distinction:

Benefits

Solid compression allows for much better compression rates when all the files are similar, which is often the case if they are of the same file format. It can also be efficient when archiving a large number of small files.

Costs

On the other hand, getting a single file out of a solid archive requires processing all the files before it, so modifying solid archives could be slow and inconvenient. On newer formats such as 7-zip, there is a solid block size option that allows for the concatenated data block to be split into individually-compressed smaller blocks, so that only a limited amount of data in the block must be processed in order to extract one file. Parameters control the maximum solid block window size, the number of files in a block, and whether blocks are separated by file extension.
Additionally, if the archive becomes even slightly damaged, some of the data after the damaged part in the block can be unusable, whereas in a non-solid archive format, usually only one file is unusable and the subsequent files can usually still be extracted.