使用公共部分压缩文件

时间:2015-01-04 15:50:24

标签: compression

我抓了一个网站并下载了每个10K(即10G)的〜1M文件。

我注意到大多数这些文件几乎完全相同,只有一个 每个文件的一小部分是不同的。换句话说,文件 看起来像这样:

 
[different title for each file] 
[fixed "decorative" code plus header] 
[information unique to this given page] 
[fixed information that appears on some pages but not others] 
[footer] 
只是稍微复杂一些。

我的问题:压缩这些文件的最有效方法是什么?

bzip2有点帮助,但由于它逐个文件压缩,它不会 "知"关于这些裁员。

tar和bzip2可能工作,但我希望能够阅读 单独的文件,而不必解开它们。如果有的话 tarbzip文件系统可以工作,但我相信那里只有tarfs 如果你压缩tar文件,那将无法工作。

到目前为止我的方法:

  • sort files | uniq -c | sort -nr > freqs.txt

  • 替换最常出现的行(或者可能是那些行 带有短串的频率乘以长度的线 不会出现在任何文件中的字符,并记录 哪些短字符串代表哪些行。

  • 要解压缩,只需更换短"令牌"与他们的字符串 全线等价物。

这很有效,但并不完美。例如,如果我添加一个新文件 碰巧有一个令牌字符串的集合,我不明白 一种简单的修复方法(我想我可以替换令牌字符串 另一个令牌字符串,但似乎变得混乱)。

此外,我更喜欢使用久经考验的知名解决方案 有一个。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用rzip或freearc。 lzip需要一个存档包装器。 IMO freearc是最好的解决方案,你可以使用像srep这样的东西来预处理输入。 IMO srep也是内置的freearc。还有exdupe,但不是存档。

相关问题