您的位置:首页 > 运维架构 > Linux

linux命令之md5sum详解

2016-01-14 13:27 706 查看
主要参考:http://www.th7.cn/system/lin/201311/46777.shtmlmd5sum是用来计算和校验文件报文摘要的工具程序,可以用来判断一个文件经过传输后是否被改变。在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。所以需要校验文件的完整性。MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法,是hash算法的一种,此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。 简单来说就是计算文件,产生一个文件的hash值,用hash值来判断两个文件数据是否一样。md5sum用法:md5sum [OPTION]... [FILE]...-b 或 --binary :把输入文件作为二进制文件看待。-t 或 --text :把输入的文件作为文本文件看待(默认)。-c 或 --check :用来从文件中读取md5信息检查文件的一致性。(不细说了参见info)--status :这个选项和check一起使用,在check的时候,不输出,而是根据返回值表示检查结果。md5是对文件按位校验,-b -t对md5结果无影响, 因为md5是对文件内容的hash,所以和文件名没有关系。举例:最简单用法 md5sum filename , 生成该文件的md5值。
1: [root@master lianxi]# md5sum data
2: 0a6de444981b68d6a049053296491e49  data
md5值重定向 将生成md5值重定向到指定的文件,通常文件的扩展名我们会命为.md5md5sum filename > filename.md5
对文件进行校验,-c选项来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和之前已经生成的md5进行对比,如果一致,则返回OK,否则返回错误信息。md5sum filename.bin -c filename.md5返回data: OK以下对目录和多个文件校验,暂时用不到,先不看.===============================================对多个文件,md5sum *.bin ,对目录下所有bin执行,逐一生成多个md5值
1: [root@master lianxi]# md5sum *
2: 0a6de444981b68d6a049053296491e49  data
3: 13df384c47dd2638fd923f60c40224c6  data2
生成多个文件md5
1: [root@master lianxi]# ls
2: data  data.bak  data.md5  d.md5
3: [root@master lianxi]# md5sum data* > d.md5
4: [root@master lianxi]# cat d.md5
5: 0a6de444981b68d6a049053296491e49  data
6: 0a6de444981b68d6a049053296491e49  data.bak
7: 0bd94658869c53cdcdf35a0f7de93e01  data.md5
将一个文件的md5追加到已有md5文件 md5sum filename2 >> filename.md5对目录下所有文件进行校验md5sum –c d.md5
1: [root@master lianxi]# md5sum -c d.md5
2: data: OK
3: data.bak: OK
4: data.md5: OK
修改文件后,文件md5变化
1: [root@master lianxi]# ls
2: data
3: [root@master lianxi]# md5sum data
4: 2360752c3368ca4f89169f5ecc06e383  data
5: [root@master lianxi]# md5sum data  > data.md5
6: [root@master lianxi]# echo "lwg" >> data
7: [root@master lianxi]# md5sum data
8: 287d237083a42f09785daa46a5fa3afe  data
9: [root@master lianxi]# md5sum -c data.md5
10: data: FAILED
11: md5sum: WARNING: 1 of 1 computed checksum did NOT match

--status,不显示校验信息,以命令返回值来判断

校验一致返回0,不一致返回1
1: [root@master lianxi]# md5sum -c data.md5
2: data: FAILED
3: md5sum: WARNING: 1 of 1 computed checksum did NOT match
4: [root@master lianxi]# md5sum -c --status data.md5
5: [root@master lianxi]# echo $?
6: 1

多个文件文件校验和grep连用

通过grep将正确的信息过滤掉
1: [root@master lianxi]# md5sum -c ../value.md5
2: acpid: OK
3: acpid.1: OK
4: anaconda.log: OK
5: anaconda.syslog: OK
6: anaconda.xlog: OK
7: boot.log: OK
8: boot.log.1: OK
9: ...
10: ...
11: 省略中间部分
12: ...
13: ...
14: yum.log.2: OK
15: md5sum: WARNING: 1 of 56 computed checksums did NOT match
1: [root@master lianxi]# md5sum -c ../value.md5| grep -v OK  
2: md5sum: WARNING: 1 of 56 computed checksums did NOT match
3: cron.1: FAILED

特殊说明

1)md5sum 是校验文件内容,与文件名是否相同无关2)md5sum值逐位校验,所以文件越大,校验时间越长。

总结

通过md5sum来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不同设备间的传输)异常造成的文件内容不一致的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: