为什么 gzip 版本的文件会产生不同的 md5 校验和

为什么 gzip 版本的文件会产生不同的 md5 校验和

我有四个使用以下命令创建的文件svndump

test.svn 
test2.svn 
test.svn.gz  
test2.svn.gz

现在当我运行这个时

md5sum test2.svn test.svn test.svn.gz test2.svn.gz

这是输出

89fc1d097345b0255825286d9b4d64c3  test2.svn
89fc1d097345b0255825286d9b4d64c3  test.svn
8284ebb8b4f860fbb3e03e63168b9c9e  test.svn.gz
ab9411efcb74a466ea8e6faea5c0af9d  test2.svn.gz

所以我不明白为什么gzip压缩文件的方式不同,是在压缩之前在某处放置时间戳吗?我遇到了类似的问题,mysqldump因为它使用顶部的日期字段

答案1

gzip在记录头中存储一些原始文件的元数据,包括文件修改时间和文件名(如果有)。看GZIP 文件格式规范

因此,预计您的两个gzip文件不相同。您可以通过传递gzip标志来解决此问题-n,这会阻止它在标头中包含原始文件名和时间戳。

答案2

每个 .gz 文件都有一个带有文件名的标头...尝试head test.svn.gzhead test2.svn.gz

相关内容