Linux 对于完全相同的内容,tar包具有不同的校验和
使用GNU tar 1.30在SUSE Linux Enterprise Server 12 SP3系统上打包文件夹时,尽管文件内容不变,但始终会给出不同的md5校验和 我运行tar来打包包含简单文本文件的文件夹:Linux 对于完全相同的内容,tar包具有不同的校验和,linux,md5,tar,checksum,opensuse,Linux,Md5,Tar,Checksum,Opensuse,使用GNU tar 1.30在SUSE Linux Enterprise Server 12 SP3系统上打包文件夹时,尽管文件内容不变,但始终会给出不同的md5校验和 我运行tar来打包包含简单文本文件的文件夹: tar cf package.tar folder 尽管如此,尽管内容完全相同,但生成的tar始终具有不同的md5(或sha1)校验和: $> rm -rf package.tar && tar cf package.tar folder &&
tar cf package.tar folder
尽管如此,尽管内容完全相同,但生成的tar始终具有不同的md5(或sha1)校验和:
$> rm -rf package.tar && tar cf package.tar folder && md5sum package.tar
e6383218596fffe118758b46e0edad1d package.tar
$> rm -rf package.tar && tar cf package.tar folder && md5sum package.tar
1c5aa972e5bfa2ec78e63a9b3116e027 package.tar
因为linux文件系统似乎以随机顺序向tar发送文件,所以我尝试使用--sort
选项。但是结果命令并没有改变我的校验和问题。此外,tar的--mtime
选项在这里也没有帮助,因为创建日期完全相同
非常感谢您在这方面提供的帮助。每次对一组文件进行tar时,tar文件的标题可能会有所不同。例如,每次的最后访问时间和修改时间可能不同 根据,GNU tar可以通过执行以下操作,为相同的输入生成相同的输出:
# requires GNU Tar 1.28+
$ tar --sort=name \
--mtime="2018-10-05 00:00Z" \
--owner=0 --group=0 --numeric-owner \
-cf product.tar build
您提供的档案中包含。 快速浏览一下它们的结构,就会发现它们在这两个领域有所不同:
tar --format=pax --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime -cf package.tar folder
现在,两个存档的
md5sum
应该相同。…文件的上次访问时间?也许?权限可以更改吗?查看TAR头中包含的内容。两个文件的文件大小是否相同?能否解压缩这两个不同的存档并比较文件夹内容?@DaBler filesize和文件夹内容对于两个版本的文件都完全相同。感谢您的输入。不幸的是,这对我不起作用。额外的头信息似乎仍在影响tars校验和。我还尝试触摸所有文件touch--no-dereference-t“201810050000”
,然后再涂焦油。仅供参考,我意识到我的文件夹包含指向文件夹内位置的符号链接。所以IMHO不应该有什么不同。在这种情况下,你必须在两个不同的焦油之间做一个比较,看看有什么不同。很可能有一些文件元数据被收集起来并放入您不想要的tar中。一旦您发现了差异所在,就可以使用来确定哪个字段是不同的。
tar --format=pax --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime -cf package.tar folder