我正在为一些代码编写单元测试,发现一个简单的方法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 文件也会有所不同。)