为什么 gzip -c 给出的结果与 gzip 不同?

为什么 gzip -c 给出的结果与 gzip 不同?

我正在为一些代码编写单元测试,发现一个简单的方法gzip会导致结果不同。经过进一步调查,我发现gzip给出的.gz文件与gzip -c给出的文件不同。这是为什么?

$ echo "foo" > bar
$ gzip bar
$ zcat bar.gz | gzip -c > test.gz
$ cmp bar.gz test.gz 
bar.gz test.gz differ: byte 4, line 1
$ stat bar.gz | grep Size
  Size: 28          Blocks: 0          IO Block: 4194304 regular file
$ stat test.gz | grep Size
  Size: 24          Blocks: 0          IO Block: 4194304 regular file
$ zcat bar.gz > foo1.txt
$ zcat test.gz > foo2.txt
$ cmp foo1.txt foo2.txt 
$ echo $?
0 

答案1

用 gzip 压缩文件将导致原始文件名被存储为输出头的一部分。

(默认情况下,修改时间也会被存储,因此即使是两个相同创建的 .gz 文件也会有所不同。)

相关内容