如何极限优化压缩文件体积

在这里说“时间换空间”似乎有点不恰当,传统的“空间”通常指内存,而此处指的是文件体积。

Intro

这篇文章是我浏览 7-ZIP 帮助文档后的总结。如果你足够闲,也可自行研究。

首先确保你使用的是最新版 64 位 7-Zip

At First

进入 7-ZIP 的安装目录,Shift + 右键,打开 CMD / PowerShell,尝试执行 7z 命令。

7Z Format

示例参数:

7z a -mx -myx -mmt=off -ms=on -mtm=off -mtc=off -mta=off -mtr=off -m0=LZMA:d=384m:fb=273:lc=8 -mmc=1000000000 -- D:\Archive.7z D:\ArchiveDir\*

各个开关的解释:

  • a:向文档中添加文件。

  • -mx:最高压缩等级预设。

  • -myx:最高文件分析器预设。

  • -mmt=off:禁用多线程模式。

  • -mmc=1000000000:筛选器(查重)重复次数。此为最大值。

  • -ms=on:始终使用固实压缩。

  • -mtm=off -mtc=off -mta=off -mtr=off:不记录时间戳、文件属性(只读、隐藏、权限等)。

  • -m0=LZMA:d=384m:fb=273:lc=8:使用 LZMA 压缩编码;字典大小 = 384 MB;单词大小 = 273 Bytes;Literal Context Bits = 8。

  • D:\Archive.7z:输出文件路径。

  • D:\ArchiveDir\*:输入文件夹路径。

关于某些选项:

  • 通常 LZMA 的压缩率略高于 LZMA2。

  • 字典大小建议设置为大于需要压缩的内容体积,但要注意内存占用,过高或致失败。

  • 由于压缩内容不同,Literal Context Bits 有时候设置为 3 或 4 会更好些。

  • 筛选器重复次数过高,将显著延长压缩时间。

  • 输入文件夹路径别忘了在结尾写上 \*