我有一组文件需要压缩,我知道这些文件是重复的且可压缩的,但 7zip 选择的压缩顺序不是最佳的,无法利用它们的可压缩性。我该如何让 7zip 以其他顺序压缩这些文件?
我想要压缩的文件如下:
- 包含大量嵌入 JPG 的 200MB PDF
- 190MB 的 JPG,全部单独嵌入 PDF 中
- 约 500MB 的其他中等可压缩文件
我知道 7zip 可以利用 PDF 和纯 JPG 之间的重复,因为当我只将 PDF 和 JPG 一起存档时,我得到的压缩率为 47%。但是当我尝试包含 500MB 的其他文件时,7zip 会先压缩 JPG,然后再压缩其他杂项数据,当它压缩到 PDF 时,压缩算法一定已经“忘记”了 JPG,因为 PDF 几乎没有被压缩。
使用 7-zip 9.32 alpha,使用 7z 存档格式、超级压缩级别、LZMA2 算法、256MB 字典大小、128 个字大小、4GB 实体块大小和 2 个 CPU 线程,我得到以下压缩比:
- 仅限 PDF:93%
- 仅限 JPG:95%
- PDF 和 JPG 合计:47%
- 仅限杂项文件:44%
- 杂项文件和 PDF:55%
- 杂项文件、PDF 和 JPG:63%
由于杂项文件可压缩到其原始大小的 44%,而 PDF 和 JPG 一起可压缩到 47%,我预计所有内容一起可压缩到 44-47% 的较低范围内,但由于 7zip 对文件的排序不佳,我得到的结果明显更差。
我曾尝试通过修改文件创建、修改和访问日期来改变 7zip 压缩文件的顺序。我曾尝试将文件移动到另一个文件夹并将它们复制回来,以便它们连续地重写到光盘上。我甚至尝试将所有 JPG 存档在一个带有存储级压缩的 zip 文件中,以便它们的文件大小与 PDF 大致匹配。无论我做什么,我似乎都无法让 7zip 压缩 PDF 和 JPG,而中间没有其他文件。
有什么想法吗?由于内存限制,我无法增加字典大小。
答案1
我设法解决了这个问题。解决方案是创建一个仅包含杂项文件的存档,然后在选择 PDF 和 JPG 的同时从资源管理器上下文菜单中选择“添加到存档”。在 7zip“添加到存档”对话框中,我选择了与之前相同的压缩设置和存档名称。
这将 PDF 和 JPG 压缩在一起 - 充分利用它们的冗余 - 然后将它们添加到现有档案中。最终,整体压缩率达到 45%,这正是我想要的。
答案2
PDF 和 JPG 本身是压缩的。压缩已压缩文件比压缩未压缩文件困难得多。因此,压缩算法并没有被“遗忘” - 这更像是将一个 zip 文件放入另一个 zip 文件中(压缩过程中很少发生这种情况)。