Zip实用程序每次在Linux中给我不同的md5sum

时间:2013-10-22 16:12:39

标签: linux file zip md5

当我在Linux中压缩(Zip 2.31)相同的文件时,我每次都会得到不同的校验和。我怎样才能保持与上次相同的md5sum? 我正在使用yum的最新zip更新

3 个答案:

答案 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