2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69

在使用7 Zip压缩文件时,有哪些最佳选择?

我经常需要收集日志文件,并将其上传到中央服务器(由另一家公司拥有)。中央服务器对文件的大小有限制,所以我试图创建一个尽可能小的文件,而且还是zip格式的。

当我只需要一个小文件时,将文本文件压缩成zip格式时,最好的设置是什么?

我已经做了很明显的选择,选择了超压缩,而且我注意到LZMA比deflate做的更好,但是有太多其他的选项组合,我无法全部测试。

答案 (6)

65
65
65
2014-04-15 15:15:36 +0000

要创建7-Zip能创建的最小标准ZIP文件,请尝试。

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

源。如何才能达到最好的标准ZIP压缩效果

否则如果你不在乎ZIP标准,就用下面的超设置。

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

哪些是:

-t7z 7z archive

-m0=lzma
       lzma method

-mx=9 level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on
``` 哪些是: 

0x1&
14
14
14
2013-07-15 10:33:24 +0000

如果你可以使用.7z格式而不仅仅是.zip,我会简单地使用PPMD和以下选项,并保留其他所有的压缩级别设置:

  • 档案格式。7z
  • 压缩方式: 压缩方法: PPMD
  • 压缩级别: 我经常使用这些选项来压缩服务器/文本日志(60MB以上),它们通常是原始大小的1-2%
8
8
8
2019-06-17 16:25:32 +0000

经过大量的实验,翻阅了详细的7zip文档,并阅读了一些7z源代码中关于高级LZMA2参数的内容,下面是一个更好的方法。它减少了一些1GB的实际测试文件,比之前接受的解决方案在这里甚至在7z manpage上发布的好2到4倍以上。

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

这里假设的是 LZMA2 压缩,但你可能会在 7zip 中通过高级 LZMA2 选项(如 -m0=LZMA2:27,或 -m0=LZMA2:d25),或一系列参数(如

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

)来获得更好的性能,我测试的 7z 版本似乎并不尊重这些参数,但你可能需要进一步探索或修补 7z 代码来正确解析它们。或者,也许它本来就应该工作,只是在测试的版本中被破坏了。

7
7
7
2016-08-15 13:27:49 +0000

我在Ubuntu服务器14.04.03中用p7zip [64] 9.20对db.fdb 1,2 GB (1236598784 B)进行了比较:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

结果如下。

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

我认为第二种方法工作得很好=(几乎)最好的压缩和最好的时间。但是对于最好的 “视图 "和容易记住的是第一种方法–小文件和没有最大压缩点。在第2和第3种方法之间,我们没有得到额外的小7z,但付出了几乎多2o的压缩时间。任何人都可以用自己的方法来决定。

3
3
3
2019-12-05 09:37:09 +0000

我决定做一些实验,根据经验寻找最佳压缩参数。

我使用的工具是wa 7-ZIP finetuner 。这个工具通过简单地重复压缩不同的参数来寻找最佳的参数组合。即使在速度很快的电脑上,一个文件的运行有时可能需要一个多小时。

它尝试的参数是

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

我把字典大小的默认参数定为512MB,实体块大小为On. 该工具使用的是LZMA方法。

几种类型文件的最佳参数组合如下。

我注意到,即使是同一类型的文件,最佳值也不是恒定的。

结论。没有最佳选项 ,因为每个文件都可能有自己独特的最佳组合。我们可以将所有的参数都开到极限,但根本无法保证改进。

最常见的组合似乎是:

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

一些7-Zip引用。

0
0
0
2011-05-10 14:37:36 +0000

将 “split to volume, bytes "字段设置为服务器允许的最大文件大小(我想是以字节为单位,尽管它看起来像接受 "KB "和 "MB "这样的常用缩写)。如果压缩文件超过了这个大小,7-zip会自动将其分割成多个文件,比如integrationserviceLog.zip.001integrationserviceLog.zip.002等等(很久以前,PK Zip用这个方法将压缩文件跨越多个软盘)。你需要所有的文件都存在才能解压。使用它而不是担心对任何特定文件集使用的绝对最佳压缩设置,因为对一个文件的最佳设置可能对另一个文件不同,你不想每次需要复制日志时都要经历这个过程。