主要参考:http://www.th7.cn/system/lin/201311/46777.shtml
md5sum是用来计算和校验文件报文摘要的工具程序,可以用来 判断一个文件经过传输后是否被改变。
在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。所以需要校验文件的完整性。
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值。
返回
将一个文件的md5追加到已有md5文件 md5sum filename2 >> filename.md5
对目录下所有文件进行校验
md5sum是用来计算和校验文件报文摘要的工具程序,可以用来 判断一个文件经过传输后是否被改变。
在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。所以需要校验文件的完整性。
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值重定向到指定的文件,通常文件的扩展名我们会命为.md5
md5sum filename > filename.md5
对文件进行校验,-c选项来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和之前已经生成的md5进行对比,如果一致,则返回OK,否则返回错误信息。
返回
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]# ls2: data
3: [root@master lianxi]# md5sum data4: 2360752c3368ca4f89169f5ecc06e383 data5: [root@master lianxi]# md5sum data > data.md56: [root@master lianxi]# echo "lwg" >> data7: [root@master lianxi]# md5sum data8: 287d237083a42f09785daa46a5fa3afe data9: [root@master lianxi]# md5sum -c data.md510: data: FAILED
11: md5sum: WARNING: 1 of 1 computed checksum did NOT match
--status,不显示校验信息,以命令返回值来判断
校验一致返回0,不一致返回1
1: [root@master lianxi]# md5sum -c data.md52: data: FAILED
3: md5sum: WARNING: 1 of 1 computed checksum did NOT match
4: [root@master lianxi]# md5sum -c --status data.md55: [root@master lianxi]# echo $?6: 1
多个文件文件校验和grep连用
通过grep将正确的信息过滤掉
1: [root@master lianxi]# md5sum -c ../value.md52: 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 OK2: md5sum: WARNING: 1 of 56 computed checksums did NOT match
3: cron.1: FAILED
特殊说明
1)md5sum 是校验文件内容,与文件名是否相同无关
2)md5sum值逐位校验,所以文件越大,校验时间越长。
总结
通过md5sum来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不同设备间的传输)异常造成的文件内容不一致的情况。