标签:shell
文件校验和匹配
要是你怀疑可能有很多文件具有相同的内文,而是用cmp或diff进行比较所有横队的比较,导致所花费的时间会随着文件数目增长成次方的增长.
这是可以使用file checksum(文件校验和),取得近似线性的性能.有很多工具可用来计算文件与字符串的校验和,包括sum,cksum,以及checksum,消息摘要工具md5与md5sum,安全性散列算法工具sha,shalsum,sha256,以及sha384.
案例:
$echo -n "hello" | md5sum | cut -d ‘ ‘ -f1
5d41402abc4b2a76b9719d911017c592
分析:获取字符串hell的MD5.
md5sum : 显示或检查MD5(128-bit)校验和,若没有文件选项,或者文件处为”-”,则从标准输入读取.
echo -n : 不打印换行
cut : cut用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文本文件.-d指定域空格和tab键不同的域分隔符.-f1表示第一个域.
校验程序用来从文件中生成校验密钥,然后利用这个校验密码核实文件的完整性.一般文件可以通过网络分发带不同的地点.出于多种原因,数据有可能在传输过程中丢失若干位,从而导致文件的破坏.
因此我么需要采用一些测试方法去确定接收到的文件是否存在错误.我们可以对原始文件和接收到的文件进行校验.
通过对比两者的校验结果,就能够核实接收到的文件是否正确.校验对于编写备份脚本或系统维护脚本来说很重要.
使用md5sum或shalsum进行校验
最知名并且使用最广泛的检验和技术是md5sum和shalsum.他们对文件内容使用响应的算法来生成校验结果.
为了计算md5sum,使用下列命令:
$md5sum f1
42a6ab275d6ae3a62ab448fb44dffb8a f1
分析:得到的结果是一个32个字符的十六进制字符串后面跟文件名.
将输出的校验结果重定向到一个文件,然后用这个md5文件核实数据的完整性:
md5sum f1>f1.MD5
可以按照下面的方法永盛成的文件何时数据完整性:
$md5sum -c f1.md5
f1: 确定
分析:如果出现确定,则证明文件无损.
shalsum是另一个常用的检验算法.他从给定的输入文件中生成一个长度为40个字符的十六进制的字符串.其用法和md5sum非常相似.
可以对多个文件进行校验
&md5sum f1 f2 > file.md5
$cat file.md5
42a6ab275d6ae3a62ab448fb44dffb8a f1
42a6ab275d6ae3a62ab448fb44dffb8a f2
分析:输出中会在每行中包含单个文件的检验结果字符串.
可以按照下面的方法用生成的文件核实数据完整性:
$md5sum -c file.md5
f1: 确定
f2: 确定
分析:这个命令会输出校验结果是否匹配的消息
对目录进行校验
对于目录进行校验意味着我们需要对目录中的所有文件以递归的方式进行计算.
他可以使用命令md5deep或者shaldeep来实现.首先,需要安装md5deep软件包可以确保能找到这些命令.用法如下:
$md5deep -rl directory_path>directory.md5
分析:-r选项代表使用递归的方式,-l(小写字母L)使用相对路径.默认情况下回话输出绝对路径.
使用下面的命令进行核实:
$md5sum -c dircetory.md5
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:shell
原文地址:http://blog.csdn.net/shanyongxu/article/details/46876485