linux – 压缩文件夹以创建tgz文件
我有一个文件夹,我想创建tgz文件并计算其sha256:
使用以下命令将文件夹转换为tgz "tar -c -C #{Shellwords.escape dir} #{Shellwords.escape basename} " "--owner=0 --group=0 --mtime='2000-01-01 00:00:00' | gzip -n > #{Shellwords.escape file}" 现在我使用2个单独的用户运行上述过程,它给了我2个文件:1和2 两个tgz文件的大小不同: -rw-r--r--@ 1 myuser Domain Users 9024 Jul 31 14:28 1.tgz -rw-r--r--@ 1 myuser Domain Users 9037 Jul 31 14:29 2.tgz 如果我尝试计算文件之间的差异,我没有看到任何diff.Diff是使用以下命令获得的. diff <(tar -tvf 1.tgz | sort) <(tar -tvf 2.tgz | sort) 如果我使用这两个文件的ruby计算sha256,那么它会有所不同. 问题是:为什么我从不同用户运行时获得tgz文件的差异. 编辑: 看这https://reproducible-builds.org/docs/archives/#file-ordering. 我会尝试这个并添加细节. 解决方法
这可能是有很多原因造成的.
> tar存储的元数据(以及gzip存储的元数据,可能包括tar存档的修改时间).我看到你正在使用一些可能会重置此元数据的某些部分的GNU tar选项,但我打赌这些选项并非穷尽所有变量属性. 总之,如果您尝试确定两个文件夹的内容是否相同,使用.tgz存档可能不是最好的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |