Chinaunix首页 | 论坛 | 博客
  • 博客访问: 255851
  • 博文数量: 54
  • 博客积分: 1761
  • 博客等级: 上尉
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-17 23:30
文章分类

全部博文(54)

文章存档

2013年(4)

2012年(7)

2011年(15)

2010年(28)

分类: LINUX

2010-12-08 22:03:54

日常工作中经常遇到需要将文件在多个机器间进行copy,又或者从网络上下载一些软件。作为一名严谨的工程师,我们需要验证下载或者copy的文件是否在传输过程中发生丢失和不完整。
验证的手段有很多种,例如使用wc来处理文本文件,但wc对于二进制文件就没有办法了。二进制文件的wc输出会出现很多错误。
root@localhost:~# wc /usr/gnu/bin/ls
wc: /usr/gnu/bin/ls:1: Illegal byte sequence
wc: /usr/gnu/bin/ls:2: Illegal byte sequence
wc: /usr/gnu/bin/ls:3: Illegal byte sequence
wc: /usr/gnu/bin/ls:6: Illegal byte sequence
wc: /usr/gnu/bin/ls:7: Illegal byte sequence

比较流行和推荐的方式应该是cksum,md5sum和sha1sum.。这个几个方法各有所长,从验证的效果来看,最推荐使用sha1sum,因为他采用了更加完整的算法-sha,从执行效率上看到cksum 和md5sum的效率相当,但md5sum的执行结果更加可靠。
下面举一个执行效率的例子来简单证明哪个效率最高。
root@localhost:~/tmp# time cksum largefile
1154565722 4227866 largefile

real    0m0.025s
user    0m0.017s
sys     0m0.007s
root@localhost:~/tmp# time md5sum largefile
40ef6f0be1df84c4794f0faad300b264  largefile

real    0m0.019s
user    0m0.012s
sys     0m0.006s
root@localhost:~/tmp# time sha1sum largefile
d395801d73777d93f41e8e43e88e779d64202931  largefile

real    0m0.036s
user    0m0.029s
sys     0m0.006s

总体上看md5sum的优势较为明显。
阅读(1148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~