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

本文介绍了一种方法,通过指定文件排序、用户归属、组名及修改时间,使用tar和gzip命令,确保即使在不同时间打包相同文件,生成的tar.gz包hash值也能保持一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景

同样的文件两次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包归档二进制文件不一致的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值