我从@ 91735472开始,从上面的答案开始,然后绕到其他地方。我的用例可能有点不寻常:我正在压缩80 GB Windows磁盘的dd映像以用于非营利性Windows翻新商。我们使用Acronis 2015(最后一个具有克隆功能的机器)将它们克隆到要翻新的计算机上。我们有带有不同驱动程序的版本,依此类推。我在自己的服务器级Linux机器上执行此操作:双Xeon总共具有16个内核(32个线程)和256GB主RAM。
我尝试了两个与原始卷略有不同的版本:在制作克隆之前已将其清零。我想看看所有未触及的零会产生多大的变化。它有助于压缩时间和压缩文件的大小,特别是在时间上。
使用原始答案中的7z参数,仅更改为使用16个线程,并且最大程度地占用了一些内存,“脏”克隆花费了120分钟,而置零的克隆仅花费了95分钟。压缩率仅提高了11%。到目前为止,所有测试中的解压缩时间均为8分钟零30秒(解压缩为stdout,重定向至/ dev / null)。压缩后的映像位于3个驱动器的带区RAID上,无论从dd到/ dev / null的复制所需的2秒时间来看,所有映像均位于缓存中。
无论如何,要达到真正的结果。剧透:进行实验很有意义。一种尺寸并不适合所有尺寸。我找不到上面原始答案的所有参数的文档,因此我删除了我不理解的参数。一切都变得越来越小,越来越快。然后,我查看了已记录的内容,并删除了似乎不适用于我的用例的内容。更好。对于“脏”案,我要花费47分43秒,对于归零案,我要花费41m 55s。文件大小仍然较小,但不是很大。最大的收获是压缩时间约为原始答案给我的1/3。
到目前为止,这是我的赢家:7z a -t7z -mx = 9 -md = 31 -mtm =--mmt = 16 -mmtf -md = 1536m
您可能没有16个线程,或者我没有所有的RAM,所以一定要尝试一下。
我的探索尚未完成。我可以指定更多或更少的线程。我只是注意到我有两个-md参数,应该使用它。