在您的情况下,最佳选择是 7-zip。
以下是选项:
7za a -r -t7z -m0=lzma2 -mx=9 -mfb=273 -md=29 -ms=8g -mmt=off -mmtf=off -mqs=on -bt -bb3 archife_file_name.7z /path/to/files
a - 将文件添加到存档
-r - 递归子目录
-t7z - 设置存档类型(在您的情况下为 7z)
-m0=lzma2 - 将压缩方法设置为 LZMA2。 LZMA 是 7z 格式的默认和通用压缩方法。 LZMA方法的主要特点:
- 高压缩比
- 可变字典大小(最大 4 GB)
- 压缩速度:在 2 GHz CPU 上约为 1 MB/s
- 解压速度:在 2 GHz CPU 上约为 10-20 MB/s
- 解压缩所需内存小(取决于字典大小)
- 小代码解压:约5 KB
- 支持多线程和 P4 的超线程
-mx=9 - 设置压缩级别。 x=0 表示复制模式(无压缩)。 x=9 - 超
-mfb=273 - 设置 LZMA 的快速字节数。它可以在 5 到 273 的范围内。正常模式的默认值为 32,最大模式和超模式的默认值为 64。通常,较大的数字会提供更好的压缩比和较慢的压缩过程。
-md=29 - 设置 LZMA 的字典大小。您必须以字节、千字节或兆字节为单位指定大小。字典大小的最大值为 1536 MB,但 7-Zip 的 32 位版本允许指定最多 128 MB 的字典。 LZMA 的默认值在正常模式下为 24 (16 MB),在最大模式下 (-mx=7) 下为 25 (32 MB),在超级模式下 (-mx=9) 下为 26 (64 MB)。如果您不指定集合 [b|k|m|g] 中的任何符号,则字典大小将计算为 DictionarySize = 2^Size 字节。解压字典大小为 N 的 LZMA 方法压缩的文件,需要大约 N 字节的可用内存(RAM)。
我使用md=29,因为在我的服务器上只有 16Gb 可用 RAM。使用此设置 7-zip 在任何目录大小的归档中仅占用 5Gb。如果我使用更大的字典大小 - 系统将进行交换。
-ms=8g - 启用或禁用固态模式。默认模式为s=on。在实体模式下,文件被组合在一起。通常,以固态模式压缩会提高压缩比。在您的情况下,这对于使实体块尽可能大非常重要。
实体块大小的限制通常会降低压缩比。固体 .7z 档案的更新可能会很慢,因为它可能需要重新压缩。
-mmt=off - 将多线程模式设置为关闭。您需要将其关闭,因为我们需要在一个单独的块中由相同的 7-zip 线程处理相似或相同的文件。缺点是存档速度慢。与您的系统有多少 CPU 或内核无关。
-mmtf=off - 将过滤器的多线程模式设置为OFF。
-myx=9 - 将文件分析级别设置为最高,分析所有文件(增量和可执行过滤器)。
-mqs=on - 在实体档案中按类型对文件进行排序。将相同的文件存储在一起。
-bt - 显示执行时间统计
-bb3 - 设置输出日志级别