当我在Linux中压缩(Zip 2.31)相同的文件时,我每次都会得到不同的校验和。我怎样才能保持与上次相同的md5sum? 我正在使用yum的最新zip更新
答案 0 :(得分:15)
正在生成的存档不仅包含压缩文件数据,还包含“额外文件属性”(如zip
documentation中所述),作为文件时间戳,文件属性,......
如果压缩之间的元数据不同,则永远不会获得相同的校验和,因为已编译文件的元数据已更改并已包含在存档中。
您可以使用zip
的{{1}}选项(或长-X
选项)来避免在档案中包含额外属性文件:
--no-extra
在没有文件修改的情况下过度运行此命令不得更改存档的哈希值。
答案 1 :(得分:1)
按照@ mc-nd的答案中的建议添加-X
标志对单文件zip来说对我来说效果很好。
但是,当我压缩目录(以我的情况为node_modules
时,每次重新安装node_modules
时都会得到不同的哈希值。
解决方法是还添加-D
标志:
-D
--no-dir-entries
Do not create entries in the zip archive for directories.
Directory entries are created by default so that their attributes can
be saved in the zip archive.
答案 2 :(得分:1)
-X
或 -D
都不适合我。看起来 zip 仍然在存档中设置时间戳,导致相同内容的哈希不匹配。
我通过手动设置文件时间戳解决了这个问题:
touch -t 202001010000 file