我有 14,000 个 25 MB 文件,我正在尝试将它们压缩到最小大小以进行存储。在运行时,我只需要解压缩一两个文件。有足够的文件内冗余,它们可以很好地压缩,但也有足够的文件间冗余,首先去皮使压缩率加倍:
Individual files, compressed with "xz -9": 65 GB total
Single tar blob, compressed with "xz -9": 33 GB
有没有办法以压缩器可以利用文件间冗余的方式压缩一组文件,但解压缩器不需要解压缩所有数据?在运行时提取 33GB 的 tar 将是站不住脚的。我可以直接使用压缩器库 API,但不希望大量修改库本身。
我尝试使用zstd
,从完整文件集中训练字典,使用该字典进行压缩,但压缩率没有任何改善(zstd 字典似乎只对非常小的文件有帮助)。