为什么在压缩同一个文件时`gzip`生成不同的二进制文件?

以下是它与bzip2比较:

 $ /tmp ls testdir xxx! $ /tmp cat testdir/xxx\! $ /tmp tar -czf t1.tgz testdir $ /tmp tar -czf t2.tgz testdir $ /tmp md5sum t1.tgz 5485da4154e180b2c30cb43ed721aee9 t1.tgz $ /tmp md5sum t2.tgz c494cd05ea3fd3aee997c541983423bd t2.tgz $ /tmp tar -cjf t1.bz2 testdir $ /tmp tar -cjf t2.bz2 testdir $ /tmp md5sum t1.bz2 35003556c14da931e0bb31e56a8c42f9 t1.bz2 $ /tmp md5sum t2.bz2 35003556c14da931e0bb31e56a8c42f9 t2.bz2 

我想知道为什么存档文件的名称会影响gzip的输出。

运行file t1.tgz t2.tgz ,你应该看到一个区别。 gzip压缩文件包含文件名和修改时间。 文件名部分在您创建档案的方式中没有用在我的系统上,但修改时间是。 如果您重复创建一个具有特定名称的文件,您仍将获得不同的文件。