tar 两个相同的包时,md5 不一样

tar 两个相同的包时,md5 不一样

有两个包,里面都有一个文件。

[root@build-production test]# ll
drwxr-xr-x. 2 root root 19 9月  18 07:58 pack1
drwxr-xr-x. 2 root root 19 9月  18 07:58 pack2
[root@build-production test]# ll pack1
-rw-r--r--. 1 root root 2 9月  18 07:58 file1
[root@build-production test]# ll pack2
-rw-r--r--. 1 root root 2 9月  18 07:58 file2

并且文件具有相同的md5。

[root@build-production test]# md5sum  pack1/file1 pack2/file2
b026324c6904b2a9cb4b88d6d61c81d1  pack1/file1
b026324c6904b2a9cb4b88d6d61c81d1  pack2/file2

但是当我使用下面的命令 tar 每个包时,它们的 tarball 的 md5 不同。

root@build-production test]# GZIP=-n tar zchf  pack1.tar.gz pack1 --mtime='2023-01-01 00:00:00'
[root@build-production test]# GZIP=-n tar zchf  pack2.tar.gz pack2 --mtime='2023-01-01 00:00:00'
[root@build-production test]#
[root@build-production test]# md5sum pack1.tar.gz pack2.tar.gz
629e155e9853f17cbd3dbdb5daf05240  pack1.tar.gz
bca577bda8bc22d600dd91fffc51574c  pack2.tar.gz

这是预期的结果吗?有没有办法让压缩文件的md5值保持一致?

答案1

原始文件名(和路径)存储在 tar 文件中。
它们并不相同(pack1/file1 与 pack2/file2),导致 tar 文件的哈希值不同。这完全符合预期。

为了使两个 tar 文件的 md5 哈希值相同,它们的内容必须完全相同。如果将整个结构放入 tar 文件中,则不仅存储的文件内容必须匹配,而且目录结构和文件/目录上的时间戳/权限也必须匹配。

相关内容