到目前为止,评论还没有具体说明他们需要压缩的文件类型,也没有得出明确的答案
我有一个 1 TB 硬盘,里面装满了 pdf、djvu,其余都是图像,我需要将其压缩到尽可能小的大小,而且我不关心速度。
我尝试了 kgb,但它没有充分利用我的 CPU。
我尝试了 tar.lzr、tar.lzma 和 tar.7z。 tar.lzr 是最好的,但它没有提供我预期的那么多。
我还注意到 nanozip,但我看到很多人报告了它的问题,尽管它在我看到的基准测试中所占的比例最高,所以有人以前有过使用它的经验吗?
答案1
7z 和 lzma 是相同的压缩算法,但容器不同。 7z
启用可靠存档模式后,应该可以做到同样的效果tar.7z
,并且提供对单个文件的随机访问也不会那么糟糕。 (不过还是很糟糕。)
pdf 内部使用 gzip,这使得它不太可压缩。大多数图像格式相同(尽管熵编码器的选择各不相同;IIRC JPEG 的熵编码器更简单)。
从理论上讲,我不知道这个想法的任何实现,您可以拥有一个存档器来撤销 pdf、png、jpeg 和各种其他已压缩文件格式的简单 gzip 或其他熵编码。然后用 LZMA 之类的好东西压缩该流。提取时,您可以从 LZMA 流中提取数据,并对需要的部分重新进行 pdf 内部压缩。您的输出将是相同的 pdf/jpg/任何内容,但文件可能具有不同的校验和/哈希值。 (因此,对于最终渲染的像素来说,它是无损的,但对于文件字节来说却不是。)
PNG 和 jpeg 优化器在某种程度上为单个文件实现了这个想法:使用等效的 gzip -9 而不是默认值重做内部压缩。
最好的办法是尝试使用各种压缩器压缩 1GB 左右的样本,看看哪种效果最好。 1GB 应该具有代表性,因为这对于一个计算机来说是合理的大小。字典大小。