我有一个文件夹,我想将其打包成一个存档。我在 Mac 和 Ubuntu 机器上有相同的文件。如果我运行 rsync,它会显示目录相同,但如果我将它们打包成 tar 然后进行 MD5 求和,结果会有所不同。我在 Mac 上尝试过 GNU tar 和 BSD tar。是否有一些选项必须使用才能使结果相同?
谢谢。
编辑:
同样的事情也发生在 Ubuntu 到 RHEL 7 上。以下是我采取的步骤:
- 在 Ubuntu 上创建目录的 tar 存档,使用 --exclude='.*' 排除隐藏文件
- 获取 tar 文件的 sha256sum
- 使用 gpg 加密档案
- 获取加密 tar 文件的 sha256sum
- 将文件传输到 Mac/RHEL 7 机器
- 在 Mac/RHEL 7 上检查加密文件的 sha256sum
- 解密并检查 tar 文件的 sha256sum
- 解压档案
- 在 Mac/RHEL 7 上再次运行 tar 文件
- 获取新档案的 sha256sum
即使存档中的文件相同,此总和也会与原始 tar 文件不同。我已使用 tar -t 和 rsync 来检查这一点。我也尝试在两端使用 --owner=0 --group=0 --mtime='1970-01-01' --mode=664,但这没有帮助。
我假设 tar 版本之类的东西添加了文件头,并且由于操作系统版本不同,每台机器上的文件头都不同。有什么办法可以解决这个问题吗?