相同内容文件压缩后md5校验值不同的问题

2022年6月13日 622点热度 6人点赞 0条评论

0x1 奇怪的问题

一般我们经常使用md5来校验文件一致性,大多数时候都没有问题。但是最近在做压缩测试,想确认文件有无问题,先cp -a复制了一份目录为备份文件,再把两个目录使用相同命令压缩,校验md5却发现值不同

[root@localhost 123]# du -sb *
117569124       mat
75331667        mat.tar.gz
117569124       mmm
75333283        mmm.tar.gz
[root@localhost 123]# ls -l
total 147152
drwxrwxr-x 7 root root     4096 Jul 16  2021 mat
-rw-r--r-- 1 root root 75331667 Jun 13 17:02 mat.tar.gz
drwxrwxr-x 7 root root     4096 Jul 16  2021 mmm
-rw-r--r-- 1 root root 75333283 Jun 13 17:03 mmm.tar.gz
[root@localhost 123]# stat *gz
  File: ‘mat.tar.gz’
  Size: 75331667        Blocks: 147144     IO Block: 4096   regular file
Device: 803h/2051d      Inode: 1853497     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-06-13 17:03:11.688382823 +0800
Modify: 2022-06-13 17:02:56.342809111 +0800
Change: 2022-06-13 17:02:56.342809111 +0800
 Birth: -
  File: ‘mmm.tar.gz’
  Size: 75333283        Blocks: 147144     IO Block: 4096   regular file
Device: 803h/2051d      Inode: 1853498     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-06-13 17:03:11.878389933 +0800
Modify: 2022-06-13 17:03:07.281218061 +0800
Change: 2022-06-13 17:03:07.281218061 +0800
 Birth: -
 [root@localhost 123]# md5sum *gz
e50a6873bbda5495395ca2bb810a01dc  mat.tar.gz
f087a1e58d12e2df5794126259b43ad5  mmm.tar.gz

可以看到复制目录和原目录本来大小是一致的,但压缩后大小不一样了,md5值变了

0x2 进一步测试

根据上面的问题,我们先后压缩同一份目录发现也可以复现,经过网上搜索后发现是跟时间有关系,目录access时间不同导致最后压缩后文件md5不一致,但是更有趣的是压缩过程会修改access的时间,导致每次打包后md5值都不一样

yuc

这个人很懒,什么都没留下

error: Content is protected !!