md5sum命令_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
6
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3761 | 回复: 5   主题: md5sum命令        上一篇   下一篇 
yanghui
注册用户
等级:上尉
经验:584
发帖:92
精华:0
注册:2011-12-13
状态:离线
发送短消息息给yanghui 加好友    发送短消息息给yanghui 发消息
发表于: IP:您无权察看 2015-7-30 15:40:58 | [全部帖] [楼主帖] 楼主

md5sum命令可以同时对一批文件进行256位的MD5编码,并可以通过比较前后二次编码值来检测一个文件是否给修改过。由于此命令执行效率较高,所以常可用于大批文件的编译过程中,比如执行第一次编译时,产生每个文件的MD5编码,当第二次或以后编译时,通过MD5编码来确定一个文件是否有修改,而只对有变化的文件进行编译,这样可以大大节省编译的时间。

假设所有需要编译的文件名列表在文件allfiles.txt中:

cat allfiles.txt | xargs md5sum > md5sum_result.txt


md5sum_result.txt中的内容为:

f86bc2cf7fd33e483c02c8d0668b0ed0  ./files/main_zero_array.cpp
d2fb00791f215a5bf5273d6256dec650  ./files/subdir/var_func_para.cpp
844a9b14aaeeb819280b3b346fc89922  ./files/subdir/performance_test.c
efae21a9d993de8b0f29cea04cbcaa3a  ./files/main.cpp
c2d956bc14cb2c71efbea91e2a1bc538  ./files/main1.cpp
a33a78c5f03d2fae9a5b79ae8295e6e6  ./files/main.c
b7d16e9dd2c60961501a221091571faf  ./files/output_args.c
018ae4b01bbde0d7ffded48419499be1  ./files/case.cpp


如果对./files/case.cpp进行一些修改,再运行命令

cat allfiles.txt | xargs md5sum -c md5sum_result.txt


会得到以下的输出结果:

./files/main_zero_array.cpp: OK
./files/subdir/var_func_para.cpp: OK
./files/subdir/performance_test.c: OK
./files/main.cpp: OK
./files/main1.cpp: OK
./files/main.c: OK
./files/output_args.c: OK
./files/case.cpp: FAILED


通过上面的结果可以知道 ./files/case.cpp给修改过了。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
jinggege
注册用户
等级:中士
经验:241
发帖:0
精华:0
注册:2016-2-26
状态:离线
发送短消息息给jinggege 加好友    发送短消息息给jinggege 发消息
发表于: IP:您无权察看 2016-5-16 21:14:48 | [全部帖] [楼主帖] 2  楼

md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。

md5校验,有很小的概率不同的文件生成的md5可能相同。比md5更安全的校验算法还有SHA*系列的。

在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

重要的选项:

-b 以二进制模式读入文件内容

-t 以文本模式读入文件内容

-c 根据已生成的md5值,对现存文件进行校验

--status 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断。

使用举例

生成文件md5值

md5sum file

 [root@master lianxi]
 0a6de444981b68d6a049053296491e49  data

使用通配对多个文件进行md5

 [root@master lianxi]
 0a6de444981b68d6a049053296491e49  data
 13df384c47dd2638fd923f60c40224c6  data2

md5sum校验的是文件内容,与文件名无关

相同内容的文件的md5一样。如下我先对文件进行复制,然后对同内容不同名的文件进行md5,md5值一样

 [root@master lianxi]
   2: [root@master lianxi]# ls
 data  data.bak
   4: [root@master lianxi]# md5sum *
 0a6de444981b68d6a049053296491e49  data
 0a6de444981b68d6a049053296491e49  data.bak

以文本模式或二进制模式读入文件并对其进行校验

-b 以二进制模式读入内容

-t 以文本模式读入文件内容进行校验

虽然是不同的读入模式,但是在进行求md5的时候,是一样的,因为是逐位校验的。

如下文本文件,无论通过哪种模式读取md5都一致。

 [root@master lianxi]
 data: ASCII text
 [root@master lianxi]
 0a6de444981b68d6a049053296491e49  data
 [root@master lianxi]
 0a6de444981b68d6a049053296491e49 *data
 [root@master lianxi]
 0a6de444981b68d6a049053296491e49  data

md5值重定向

将生成md5值重定向到指定的文件,通常文件的扩展名我们会命为.md5

 [root@master lianxi]
   2: [root@master lianxi]# md5sum data
 0a6de444981b68d6a049053296491e49  data
   4: [root@master lianxi]# cat data.md5 
 0a6de444981b68d6a049053296491e49  data

将多个文件的md5重定向到指定的文件

每个文件的md5生成为一行

 [root@master lianxi]
 data  data.bak  data.md5  d.md5
 [root@master lianxi]
   4: [root@master lianxi]# cat d.md5 
 0a6de444981b68d6a049053296491e49  data
 0a6de444981b68d6a049053296491e49  data.bak
 0bd94658869c53cdcdf35a0f7de93e01  data.md5

重定向追加

这里新增文件ls,单独求其md5,将其md5追加到文件中

 [root@master lianxi]
   2: [root@master lianxi]# ls
 data  data.bak  data.md5  d.md5  ls
   4: [root@master lianxi]# md5sum ls >> d.md5 
 [root@master lianxi]
 0a6de444981b68d6a049053296491e49  data
 0a6de444981b68d6a049053296491e49  data.bak
 0bd94658869c53cdcdf35a0f7de93e01  data.md5
   9: c6337b20f3c159544bff5cf622391f9e  ls

md5校验

-c选项来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和之前已经生成的md5进行对比,如果一致,则返回OK,否则返回错误信息

md5sum –c d.md5

 [root@master lianxi]
 data: OK
 data.bak: OK
 data.md5: OK
 ls: OK

修改文件后,文件md5变化

 [root@master lianxi]
 data
 [root@master lianxi]
   4: 2360752c3368ca4f89169f5ecc06e383  data
 [root@master lianxi]
   6: [root@master lianxi]# echo "lwg" >> data
 [root@master lianxi]
   8: 287d237083a42f09785daa46a5fa3afe  data
 [root@master lianxi]
 data: FAILED
  11: md5sum: WARNING: 1 of 1 computed checksum did NOT match

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

校验一致返回0,不一致返回1

 [root@master lianxi]
 data: FAILED
 md5sum: WARNING: 1 of 1 computed checksum did NOT match
   4: [root@master lianxi]# md5sum -c --status data.md5 
 [root@master lianxi]
 1

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

通过grep将正确的信息过滤掉

 [root@master lianxi]
 acpid: OK
 acpid.1: OK
 anaconda.log: OK
 anaconda.syslog: OK
 anaconda.xlog: OK
 boot.log: OK
 boot.log.1: OK
 ...
 ...
 省略中间部分
 ...
 ...
 yum.log.2: OK
 md5sum: WARNING: 1 of 56 computed checksums did NOT match
 [root@master lianxi]
 md5sum: WARNING: 1 of 56 computed checksums did NOT match
 cron.1: FAILED

特殊说明

1)md5sum 是校验文件内容,与文件名是否相同无关

2)md5sum值逐位校验,所以文件越大,校验时间越长。

总结

通过md5sum来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不同设备间的传输)异常造成的文件内容不一致的情况。



赞(0)    操作        顶端 
twany
注册用户
等级:少校
经验:1408
发帖:17
精华:0
注册:2015-6-2
状态:离线
发送短消息息给twany 加好友    发送短消息息给twany 发消息
发表于: IP:您无权察看 2016-5-25 9:14:27 | [全部帖] [楼主帖] 3  楼

棒棒哒



赞(0)    操作        顶端 
ettu
注册用户
等级:上尉
经验:787
发帖:0
精华:0
注册:2016-2-22
状态:离线
发送短消息息给ettu 加好友    发送短消息息给ettu 发消息
发表于: IP:您无权察看 2016-5-25 9:16:00 | [全部帖] [楼主帖] 4  楼

学业经验



赞(0)    操作        顶端 
伊恩dih
注册用户
等级:少校
经验:819
发帖:15
精华:0
注册:2015-5-28
状态:离线
发送短消息息给伊恩dih 加好友    发送短消息息给伊恩dih 发消息
发表于: IP:您无权察看 2016-5-25 13:20:41 | [全部帖] [楼主帖] 5  楼

学习中,感谢楼主!



赞(0)    操作        顶端 
duff
注册用户
等级:少校
经验:968
发帖:0
精华:0
注册:2015-7-22
状态:离线
发送短消息息给duff 加好友    发送短消息息给duff 发消息
发表于: IP:您无权察看 2016-5-26 11:29:38 | [全部帖] [楼主帖] 6  楼

学习一下经验



赞(0)    操作        顶端 
总帖数
6
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论