为什么同一个文件的两个tarball的md5哈希值不同?

我可以跑:

echo "asdf" > testfile tar czf a.tar.gz testfile tar czf b.tar.gz testfile md5sum *.tar.gz 

事实certificate, a.tar.gzb.tar.gz有不同的md5散列。 这是真的,他们是不同的,这diff -u a.tar.gz b.tar.gz证实。

我需要传入哪些额外的标志以使其输出在相同input的情况下随时间变化一致?

Solutions Collecting From Web of "为什么同一个文件的两个tarball的md5哈希值不同?"

tar czf outfile infiles相当于

 tar cf - infiles | gzip > outfile 

文件不同的原因是gzip将输入文件名和修改时间放入压缩文件中。 当输入是管道时,它使用空字符串作为文件名,当前时间用作修改时间。

但它也有一个--no-name选项,它告诉它不要把名字和时间戳放到文件中。 所以,如果你明确地写了扩展的命令,而不是使用-z选项来tar ,你可以使用这个选项。

 tar cf - testfile | gzip --no-name > a.tar.gz tar cf - testfile | gzip --no-name > b.tar.gz 

我在OS X 10.6.8上测试了它,它工作。