Solid Compression

Posted 9reyson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solid Compression相关的知识,希望对你有一定的参考价值。

定义

Solid Compression是一种多文件的数据压缩方式,其中所有未被压缩的文件是一个整体,视为一个独立的data block。这样的文件称为solid archive。7z、RAR压缩格式和tar-based格式都支持Solid Compression。但是ZIP压缩不支持,因为ZIP存储分立的压缩文件。

概念解释

文件压缩格式通常包括:压缩(compression)和打包(archiving)。对于多文件的情况,可以用两种不同的方式组合压缩和打包过程:
1. 先单独压缩每个文件,然后打包成一个独立的文件
2. 先打包成一个独立的文件,然后再进行压缩(Solid Compression)

ZIP可以使用第1种方式实现Solid Compression的效果。在Unix中,压缩和打包是两个分立的过程,以下是一个例子:
- compressing individual files and then archiving would be a tar of gzip’ed files – this is very uncommon, while
- archiving via tar and then compressing yields a compressed archive: a .tar.gz – and this is solid compression.

Solid Compression的优缺点

  • 优点

    1. 对于所有文件都很相似的情况(相同的文件格式等),Solid Compression的压缩率更高
    2. 打包很多小文件时更加高效
  • 缺点

    1. 使用Solid Compression后,如果要从压缩包中提取出某一个文件,则需要处理所有的文件才能实现。因此,修改Solid Archive会比较慢和不方便。但是最新版的7-zip中可以设置solid block size,修改压缩文件相对比较简单。
    2. 使用Solid Compression,一旦压缩文件有一点损坏,可能导致压缩包里面的所有文件都无法使用。

参考资料

wiki: Solid compression

以上是关于Solid Compression的主要内容,如果未能解决你的问题,请参考以下文章

HDOJ4691 Front compression

如何找到 Parquet 文件生成时使用的 COMPRESSION_CODEC?

ZipFile (System.IO.Compression)、c# (WPF) 的字符提取问题

我没有在“System.IO.Compression”命名空间中找到“ZipFile”类

ASP.NET VNext 完整 CLR 中的 System.IO.Compression

dimensionality reduction动机---data compression