Linux中文件MD5校验方法

md5sum命令用于生成文件的md5数字摘要,并可以验证文件内容是否发生了改变,间接地还可以检验两个文件内容是否完全相同。因为md5sum是读取文件内容来计算校验码的,因此只能验证文件内容,而无法验证文件属性。

生成文件的md5值

1
2
3
4
[root@wds069 python]# md5sum passwd passwd.bak 
fa60ed523d3c3af41cde7664765ec995 passwd
fa60ed523d3c3af41cde7664765ec995 passwd.bak
[root@wds069 python]#

根据生成的md5值判断文件是否发生改变

  1. 将md5值保存到md5.log中
    1
    2
    3
    4
    [root@wds069 python]# md5sum passwd passwd.bak > md5.log
    [root@wds069 python]# cat md5.log
    fa60ed523d3c3af41cde7664765ec995 passwd
    fa60ed523d3c3af41cde7664765ec995 passwd.bak
  2. 根据md5.log判断文件是否改变
    如下是没有发生改变的
    1
    2
    3
    [root@wds069 python]# md5sum -c md5.log 
    passwd: OK
    passwd.bak: OK
    修改passwd.bak文件,然后重新查看md5,如下可以看到passwd.bak显示的是FALIED
    1
    2
    3
    4
    5
    6
    7
    [root@wds069 python]# echo xxx >> passwd.bak 
    [root@wds069 python]#
    [root@wds069 python]# md5sum -c md5.log
    passwd: OK
    passwd.bak: FAILED
    md5sum: WARNING: 1 computed checksum did NOT match
    [root@wds069 python]#
    查看修改后的passwd.bak的md5值,md5.log中的原来的md5值确实不同了
    1
    2
    3
    4
    5
    6
    7
    8
    [root@wds069 python]# md5sum passwd.bak 
    1c8bd8c8eafdefde91b6e7fb71b96925 passwd.bak
    [root@wds069 python]#

    [root@wds069 python]# cat md5.log
    fa60ed523d3c3af41cde7664765ec995 passwd
    fa60ed523d3c3af41cde7664765ec995 passwd.bak
    [root@wds069 python]#

常用参数

当使用-c的时候,还可以使用以下参数。
--quiet 不显示验证结果为OK的记录。

1
2
3
4
[root@wds069 python]# md5sum --quiet -c md5.log 
passwd.bak: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[root@wds069 python]#

--status 不显示任何信息,只能通过命令的退出状态码判断验证结果是否有failed。只要有一条failed记录,则状态码为1,否则为0。

1
2
3
4
[root@wds069 python]# md5sum --status -c md5.log  
[root@wds069 python]# echo $?
1
[root@wds069 python]#

课程中心

在线课程