当我在 Linux 中压缩(Zip 2.31)同一个文件时,每次都会得到不同的校验和。如何保持与上次相同的 md5sum?我正在使用来自 yum 的最新 zip 更新
问问题
9954 次
3 回答
26
正在生成的存档不仅包含压缩文件数据,还包含“额外文件属性”(如zip
文档中所述),如文件时间戳、文件属性......
如果此元数据在压缩之间不同,您将永远不会获得相同的校验和,因为压缩文件的元数据已更改并已包含在存档中。
您可以使用zip
'-X
选项(或 long--no-extra
选项)来避免在存档中包含文件的额外属性:
zip -X foo.zip foo-file
在不修改文件的情况下连续运行此命令不得更改存档的哈希值。
于 2013-10-22T16:19:01.653 回答
3
既不为我工作,-X
也不-D
为我工作。看起来 zip 仍然在存档中设置时间戳,导致相同内容的哈希不匹配。
我通过手动设置文件时间戳解决了这个问题:
touch -t 202001010000 file
于 2021-02-10T14:25:18.063 回答
3
按照@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.
于 2020-04-06T10:34:39.077 回答