我如何知道 gzip 压缩级别?

rab*_*bin 9 linux compression gzip

给定一个 gzip 压缩文件,我怎么知道它使用了什么压缩级别(1-9)?

小智 28

它存储在文件头中。要查看它,请使用file命令。例如:

$ file testfile.gz
testfile.gz: gzip compressed data, from Unix, last modified: Sun Sep 15 14:22:19 2013, max compression
Run Code Online (Sandbox Code Playgroud)

不幸的是,标题中只有三个可能的值:最大速度(级别 1)、最大压缩(级别 9)和“正常”(所有其他级别)。但总比没有好!

  • 看起来压缩文件的其余部分并没有变得更清晰。对所有级别的 201 字节文件进行测试压缩仅产生 4 个不同的输出 - 按级别划分为 (1,23,45678,9) - 特别标记级别 1 和 9(请参阅 RFC1952 中的 XFL;这就是为什么 `file` 可以认识那些)。 10^7 字节的文件仍然只产生 7 个唯一的输出 - 分区 (1,2,3,4,5678,9)。虽然这并不意味着不同的级别对于较大的文件毫无用处,但它表明您不能假设 9 个唯一的输出。 (2认同)
  • 直到 3.5(甚至可能包括 3.6)的每个 Python 版本都将标头中的压缩级别设置为 9,即使它不是。只是一个错误,但仅供参考:https://bugs.python.org/issue27521 (2认同)

And*_*ert 7

gzip -l <filename> 会给你压缩比,但没有办法直接找到使用的压缩级别。

  • 虽然关于 elvel 的断言是错误的,但该命令对于压缩比很有用。 (2认同)

She*_*har 6

无法直接确定 gzip level 。
在我看来,确定它的唯一方法是对文件进行 gunzip 并在不同级别进行压缩,然后将结果与现有文件大小进行比较。
我相信默认级别是 6 所以在大多数情况下这应该是你的答案

  • 是的。GNU tar 在 gzip 压缩时默认使用级别 9。 (2认同)
  • Python 的压缩级别也默认为 9:https://docs.python.org/3/library/gzip.html (2认同)