tar.gz包中保证同内容文件hash一致的打包方式

tech2022-12-22  125

问题背景

同样的文件两次tar.gz打包生成的tar包hash值不一致,但是我们的需求是文件二进制内容一致的时候,tar包应该hash一致。

文件根因分析

tar.gz打包的时候,会把文件的组名,排列顺序,用户归属,修改时间,tar归档包的生成时间等信息均打入。

解决办法

tar --sort=name --owner=root:0 --group=root:0 --mtime='2020-09-03T08:00:00Z' -cf ../mmmm.tar ./* gzip –n mmm.tar

通过强制指定一致的排序方式 --sort=name 通过指定一致的拥有者--owner=root:0 通过指定一致的组名--group=root:0 通过指定一致的修改时间--mtime='2020-09-03T08:00:00Z'

通过上述命令可以保证tar归档包的二进制一致性。可以通过diff校验。但是虽然tar归档包二进制一致,不同tar归档包的生成时间不同。所以gzip –n可以用来忽略tar归档包时间不一致的问题。

上述两行命令可以解决所有tar包归档二进制文件不一致的问题。

最新回复(0)