在Ubuntu 22.04上,我发现这两种方法会得到不同的archive_tgz sha256
tar czf /a/archive_tgz .
tar czf /dev/stdout . | split -d -b 200M - /a/archive. && cat /a/archive.* > /a/archive_tgz
这是正常的还是与文件的块大小有关?有什么不同?
答案1
区别在于修改时间的.
变化它包含在 tar 文件中(tar czf archive.tgz .
更新.
)。
tar czf /dev/stdout . | sha256sum
和
tar czf archive.tgz .
sha256sum archive.tgz
已经给出了不同的哈希值(没有split
)。它还警告tar: .: file changed as we read it
。
写入不同的目录,因此.
的修改时间不变,给出相同的哈希值。
tar czf ../archive.tgz .
sha256sum ../archive.tgz
您还可以split
通过比较哈希值来验证这不是问题:
tar czf single-archive.tgz .
split -d -b 200M - single-archive.tgz archive. && cat archive.* >archive-combined.tgz
md5sum single-archive.tgz
md5sum archive-combined.tgz