Zip utility giving me different md5sum every time in Linux
The archive being generated does not only contain the compressed file data, but also "extra file attributes" (as refered in zip
documentation), as file timestamps, file attributes, ...
If this metadata is different between compressions, you will never get the same checksum, as the metadata for the compresed file has changed and has been included in the archive.
You can use zip
's -X
option (or the long --no-extra
option) to avoid including the files extra attributes in the archive:
zip -X foo.zip foo-file
Sucessive runs of this command without file modifications must not change the hash of the archive.
Adding -X
flag as suggested in @mc-nd's answer worked fine for me on single-file zip.
But when I was compressing a directory (node_modules
in my case) I was getting the different hash each time I reinstalled node_modules
.
The fix was to also add -D
flag:
-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.