我不在乎压缩需要多长时间,我想要实现的只有两件事:
因此,诸如 7-zip 之类的建议不会有太大用处,除非 7-zip 在标准 ZIP 压缩方面也稍好一些(而不是使用它非常好的 .7z 格式)。
理想情况下,我正在寻找:
请记住,压缩需要多长时间不是问题!
最后一件事 - 有些文件可能会使用不同的设置更好地压缩,例如“字大小”或“字典大小” - 是否有可以分析文件并选择最合适压缩率的工具,或者 WinZip,7-zip等已经这样做了吗?
afr*_*ier 24
如果您希望与 Windows XP 中内置的 Zip 文件夹功能兼容,则只能使用 Deflate 压缩。我认为您甚至无法使用 Deflate64,更不用说 WinZip 和 PowerArchiver 的最新版本中提供的高级压缩方法(如 LZMA、PPMD、WavPack、Bzip2 等)。PowerArchiver 至少默认为这些文件使用 .zipx 扩展名——我认为 WinZip 还没有这样做。
7-Zip 可以创建的最小 zip 文件可以使用以下命令行完成:
7za a -mm=Deflate -mfb=258 -mpass=15 -r C:\Path\To\Archive.zip C:\Path\To\Files\*
Run Code Online (Sandbox Code Playgroud)
特别注意:7-Zip 的通配符解析器与系统上的大多数其他解析器不同。*.*表示所有具有扩展名的文件。 *表示所有文件。
以这种方式创建 .zip 文件(并且,大概是使用其他工具尝试制作较小的“标准”.zip 文件)真的非常非常慢。通过使用 7-Zip 或 WinRar 创建自解压档案,您很可能会节省大量时间和空间。
Ano*_*non 10
我所知道的最好的 deflate(标准 ZIP 使用的压缩格式)压缩器是:
使用 Zopfli 将文件压缩文件大小与数据压缩进行比较(从原始存档):
????????????????????????????????????????????????????????????????????
? ?Corpus size?gzip -9 ?7-zip ?kzip ?Zopfli ?
????????????????????????????????????????????????????????????????????
?Alexa-top-10k ? 693108837?128498665?125599259?125163521?123755118?
?Calgary ? 3141622? 1017624? 980674? 978993? 974579?
?Canterbury ? 2818976? 730732? 675163? 674321? 669933?
?enwik8 ? 100000000? 36445248? 35102976? 35025767? 34995756?
????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
即使在随机的 PNG 中,Zopfli 也能比 pngout 好 0.5%。Zopfli 是其中最小的一个。
假设您使用的是 Windows:如果您仍想使用 ZIP 格式,我建议您使用 Ken Silverman 的免费 KZIP 命令行实用程序,可在此处找到。将它复制到包含您需要压缩的所有文件的文件夹中,使用 CMD 转到该文件夹,然后运行以下命令:
kzip /r <filename of ZIP file> *.*
Run Code Online (Sandbox Code Playgroud)
正如 Roald 所建议的,最好包含kzip.exe驻留在系统 PATH 变量中的目录,以防止它被包含在存档/Zip 文件中。
到目前为止,我发现使用 KZIP 创建的 ZIP 文件比其他 ZIP 压缩程序创建的文件小 10-20%。它们也可以通过其他存档软件(Winzip、WinRAR、7-zip 等)和 Windows 完全打开。
Dar*_*oid -1
它更多地限制了压缩器在工作时必须提供多少内存。使用 7-Zip,我会使用 .Zip 格式、超压缩、LZMA 压缩方法和默认 64MB 字典大小来打包存档。如果您有可用内存,请增加字典大小,但请注意,您将需要近 3GB 可用内存来压缩 64MB 字典。如果您有足够的内存,使用更大的字典应该可以让 7-zip 寻找更多匹配项并提供更好的压缩。LZMA 比 gzip(deflate/deflate64,我认为)和 bzip2 平均好 5%,根据内容高达 10-12%。
我不知道有什么工具可以找到最佳的单词/字典大小,但我认为您会发现压缩方法与输入数据具有更强的相关性,否则平均值/默认值应该很好。