Pea*_*key 7 compression zip 7-zip
我有一个大小为 19 字节的文本文件,并且使用 zip 和 7zip 压缩了该文件,它看起来更大。我读过关于为什么 7zipped 文件比原始文件大的问题?以及为什么 ZIP 压缩不压缩任何东西?但考虑到文件尚未压缩,我希望进一步压缩。附上截图。
编辑0
我通过创建一个包含随机数据的文件来进一步举例,dd if=/dev/urandom of=sample.log bs=1G count=1
并尝试使用 zip 和 7zip 压缩文件,但是没有压缩增益。这是为什么?
Cyb*_*ull 11
正如@kinokijuf 所说,有一个文件头。但要进一步扩展,关于文件压缩还有一些其他的事情需要了解。
zip 标头包含用于识别文件类型(幻数)、zip 版本以及最终包含在存档中的所有文件的列表的所有必要信息。
无论如何,您的文件可能没有被压缩。如果您运行,unzip -l example.zip
您可能会看到文件大小没有改变。如果 DEFLATE(zip 使用的主要压缩方法)完全可压缩,则 19 个字节可能会产生比节省的更多开销。
在其他情况下,例如 PNG 图像,它们已经被压缩,所以 zip 只会存储它们。DEFLATE 不会费心压缩任何已经压缩的东西。
如果在另一方面,你有很多的文本文件,其大小超过几KB的每个,你会通过把它们放到一个得到极大的节省单zip压缩包。
压缩非常规则的格式化数据(如包含 SQL 转储的文本文件)时,您将获得最大的节省。例如,我曾经有一个大约 13MB 的小型 SQL 数据库的转储。我跑zip -9 dump.sql dump.zip
了它,然后最终得到了大约 1MB。
另一个因素是您的压缩级别。默认情况下,许多存档器只会在中级压缩,以求速度而不是减少。使用 zip 压缩时,尝试-9
最大压缩的标志(我认为 3.x 手册说此时只有 DEFLATE 支持压缩级别)。
存档的开销超过了您压缩文件可能获得的任何收益。尝试将较大的文本文件放在那里,看看你会得到什么。-v
压缩时使用该标志以随时查看您的储蓄。