我在等价的地方想过下面的命令,但是它们产生了不同的校验和:
tar -cvzf ...和tar -cvf ...; gzip ... tar -cvf ...; gzip ...不会产生相同的输出。
sha1sum不同。
什么是gzip命令将完全匹配tar -cvzf行为?
输出文件的差异可能不是由于压缩方法。 默认情况下,GNU tar使用标准的GZIP 放气模式。 其中一个原因是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
问题在于MTIME字段。 对于来自pipe道的数据,这是当前Unix时间的值(1970年1月1日以来的秒数)。 因此,以彼此间至less一个第二间隔创build的另外两个相同的压缩档案将是不同的。
尝试在相同的数据上运行两次tar -cvzf并比较结果。 结果将在时间戳值的最低字节的第5个字节中有所不同。
$ tar czvf test1.tgz tmp/ ; sleep 2 ; \ tar czvf test2.tgz tmp/ ; md5sum test1.tgz test2.tgz tmp/ tmp/test tmp/ tmp/test 23d46f62dd4a9a0851279df7fe15842e test1.tgz c8ae65026a5f771c63acf87a18f7379c test2.tgz