日常工作中经常遇到需要将文件在多个机器间进行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的优势较为明显。
阅读(1219) | 评论(0) | 转发(0) |