输出文件的差异可能不是由于压缩方法。默认情况下 GNU tar 使用标准的 GZIP deflate模式。造成差异的原因之一是 GZIP 压缩文件的格式。
GZIP头的前8个字节结构如下
OFFSET SIZE VALUE COMMENT
0 1 0x1F First "magic" id
1 1 0x8B Second "magic" id
2 1 CM Compression method
3 1 FLAGS 8-bit flag register
4 4 MTIME Object modification time
输出文件的差异可能不是由于压缩方法。默认情况下 GNU tar 使用标准的 GZIP deflate模式。造成差异的原因之一是 GZIP 压缩文件的格式。
GZIP头的前8个字节结构如下
问题出在
MTIME
字段上。对于来自管道的数据,这是当前 Unix 时间的值(自 1970 年 1 月 1 日以来的秒数)。因此,以至少一秒的间隔创建的两个在其他方面相同的压缩档案将是不同的。尝试对
tar -cvzf
同一数据运行两次并比较结果。结果将在第 5 个字节(时间戳值的最低字节)处有所不同。