文件校验和匹配

要是你怀疑可能有非常多文件具有同样的内文,而是用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表示第一个域.

校验程序用来从文件里生成校验密钥,然后利用这个校验password核实文件的完整性.一般文件能够通过网络分发带不同的地点.出于多种原因,数据有可能在传输过程中丢失若干位,从而导致文件的破坏.

因此我么须要採用一些測试方法去确定接收到的文件是否存在错误.我们能够对原始文件和接收到的文件进行校验.

通过对照两者的校验结果,就行核实接收到的文件是否正确.校验对于编写备份脚本或系统维护脚本来说非常重要.

使用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学习四十八天----文件校验和匹配的更多相关文章

  1. shell 学习四十五天---xargs

    当 find 产生一个文件列表时,该列表提供给另一个命令有时是很有用的.案例: $touch abc.c erd.c oiy.c $ll ./erd.c ./abc.c ./oiy.c $find - ...

  2. linux shell学习四

    Shell分支语句 case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command ...

  3. shell学习四十天----awk的惊人表现

    awk的惊人表现 awk能够胜任差点儿全部的文本处理工作.     awk 调用 1.调用awk: 方式一:命令行方式 awk [-F field-separator ] 'commands' inp ...

  4. 【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)

    在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...

  5. shell学习三十八天----运行顺序和eval

    运行顺序和eval shell从标准输入或脚本中读取的每一行称为管道,它包括了一个或多个命令,这些命令被一个或多个管道字符(|)隔开. 其实嗨哟非常多特殊符号可用来切割单个的命令:分号(;),管道(| ...

  6. shell学习五十八天----/proc文件系统

    /proc文件系统 前言:linux中的/proc文件系统,由一组文件夹和文件组成,挂载(mount)与/proc文件夹下. /proc文件系统是一种虚拟文件系统,以文件系统文件夹和文件形式,提供一个 ...

  7. shell学习四十九天----进程建立

    进程 前言:进程指的是运行中程序的一个实例.新进程由fork()与execve()等系统调用所起始,然后运行,知道他们下达exit()系统调用为止. linux系统都支持多进程.尽管计算机看起来像是一 ...

  8. python学习第十八天 --文件操作

    这一章节主要讲解文件操作及其文件读取,缓存,文件指针. 文件操作 (1)文件打开:open(filepath,filemode) filepath:要打开文件的路径 filemode:文件打开的方式 ...

  9. linux 学习3 第四讲 文件常用命令

    好几天没有在网上总结了.我把ppt先誊写在本子上,这样听的时候记录就方便很多,添些东西就可以. 我想先看shell那部分,但是没有之前几章的准备,是没法跟着视频动手操作的.所以还是按部就班得学习. 虽 ...

随机推荐

  1. 网络结构设计——负载均衡之LVS学习笔记(二)

    LVS按个人理解的说就是将一台Linux服务器当作路由器等功能的技术.LVS---Linux虚拟服务器. LVS实现了三种IP负载均衡技术VS/NAT.VS/TUN.VS/DR. 今天简单分享一下我在 ...

  2. 修改linux的文件时,如何快速找到要修改的内容并修改

    修改linux系统下的文件时,如果文件内容很多,不容易找到需要修改的内容,下面详细介绍linux系统下如何快速修改文件. 工具/原料   linux系统 方法/步骤     在linux系统下,找到需 ...

  3. C#.NET常见问题(FAQ)-如何清空stringbuilder

    就红色的代码可以: System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("hello" ...

  4. 当Activity继承AppCompatActivity如何实现隐藏标题栏与状态栏

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); g ...

  5. 嵌入式Linux的web视频服务器的构建

    http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...

  6. top level element is not completed

    今天在使用IDEA配置springmvc文件时,出现类似在Android studio 中样式文件报top level element is not completed错,郁闷极了,找了好久 才找到解 ...

  7. MySQL 分库备份

    mysql -uroot -p'password' -e "show databases;"|grep -Evi "database|infor|perfor" ...

  8. 1z0-052 q209_8

    8: Note the following structures in your database server: 1. Extents 2. OS Blocks 3. Tablespace 4. S ...

  9. 解决java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9A\x84...' for column 'groupName'

    今天使用mysql,用java程序往mysql中写数据,出现如下错误: Caused by: java.sql.SQLException: Incorrect string value: '\xD3\ ...

  10. jQuery 源码学习笔记

    //检测 window 中新增的对象 //first var oldMap = {}; for(var i in window) { oldMap[i] = 1; } //second for(var ...