有什么办法选择性预防7-zip 中压缩的某些文件类型,例如 WinRAR?
我正在尝试压缩一个巨大的文件夹(几千兆字节),并且我不希望重新压缩已经压缩的文件(例如 ZIP 文件)——它们应该以未压缩的形式存储。
答案1
是的,同一个 7-Zip 档案中的不同文件可以采用不同的压缩方法。
使用命令行版本的7-Zip,带上参数-m
指定方法为Copy
,表示不压缩。
例子 :
7za a -m0=Copy tmp7.7z *.txt
有关详细信息,请参阅For more info, see-m(设置压缩方法)开关。
答案2
假设您的文件夹中有 zip 文件和未压缩的 txt 文件。
第一步使用以下命令创建一个压缩 txt 文件的档案。
您可以使用 -m 设置压缩级别,这也取决于您使用的压缩方法
我们假设这里仅是默认压缩
7z a compressed.7z *.txt -r
您现在将获得 compressed.7z。
这第二步将已经压缩的文件复制到此档案或创建新的档案
7z u compressed.7z -u!update.7z -mx0 *.zip
更新命令有进一步阐述这里
如果你可以自由使用图形界面,可以按照以下方式进行更新
答案3
从技术上讲,压缩文件不会进一步压缩,这与熵限制或类似的东西有关,我忘记了细节,但据我所知,您最多能得到的压缩率不到 2%。
大多数好的压缩器都会检查压缩情况并简单地存储不可压缩的文件,因为压缩会增加开销并增加大小。
当然,首先需要花费查看文件的工作和时间。
正如其他答案中所讨论的,对文件集执行多次传递可能是最好的解决方案,并且易于编写脚本。
创建 7z 存档并一次性添加除压缩文件之外的所有内容,然后将预压缩文件作为非压缩数据附加。(我这样做是因为可压缩的内容将位于存档的开头,而不可压缩的内容则位于结尾。由于它们是连续的,因此它可以更快地从驱动器流出)
(过多使用‘压缩...’!)