为什么 tar/gzip 不能压缩两个相似的大目录?

为什么 tar/gzip 不能压缩两个相似的大目录?

很久以前,在尝试增量备份和差异备份之前,我尝试对几个类似的大型(1 GB)目录进行 tar/gzip,但它们的压缩效果并不比单独对每个目录进行 tar 和 gzip 更好。我的猜测为什么它不起作用是这样的:

  1. tar 可能不会将重复的文件放在一起

  2. 因为文件距离很远,它们将位于单独的 gzip DEFLATE 块中,因此不会被压缩在一起(我也问过多远

这个推理正确吗?

答案1

是的,您的推理是正确的,因为 tar 不会按扩展名对文件进行排序(这可能有助于实现更高的压缩比),并且gzip是一种非常古老的压缩算法,具有相对适中的字典,只有 32KB。

请尝试使用xzorp7zip代替。

这是一个压缩字符串,它可以让我在Linux下达到最高的压缩率:

7za a -mx=9 -myx=9 -mfb=273 -bt -slp -mmt4 -md=1536m -mqs archive.7z [list of files]

这需要大量内存(至少 32GB RAM)。如果删除-mmmt4并减少字典大小为 1024m,则 16GB 就足够了。

说到对tar.几年前我写了一个脚本来实现这一点:https://github.com/birdie-github/useful-scripts/blob/master/tar_sorted

相关内容