文件校验和匹配

要是你怀疑可能有非常多文件具有同样的内文,而是用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. windows安装go-sqlite3失败,提示找不到gcc

    windows安装go-sqlite3失败,提示找不到gcc go get github.com/mattn/go-sqlite3时失败,提示exec: “gcc”: executable file ...

  2. Could not find com.android.tools.build:gradle:3.0.0-alpha1 in circle ci

      Error:(1, 0) The android gradle plugin version 3.0.0-alpha1 is too old, please update to the lates ...

  3. svn自助改动password(PHP脚本实现)

    #创建脚本文件夹 mkdir -p /var/www/svn/svntools #创建apache配置文件 touch /etc/httpd/conf.d/alias.conf #输入下面内容: Al ...

  4. easyui combotree不让父级选中

    easyui combotree不让父级选中? <ul id="combotree"></ul> $(function () { $("#comb ...

  5. 成员函数的const究竟修饰的是谁

    demo <pre name="code" class="cpp">class Test { public: const void OpVar(in ...

  6. PHP高级教程-过滤器

    PHP 过滤器 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 什么是 PHP 过滤器? PHP 过滤器用于验证和过滤来自非安全来源的数据. 测试.验证和过滤用户输入或自定义数据是 ...

  7. jsoup抓取豆瓣美女

    package com.huowolf; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOu ...

  8. VB中将INT型转换成STRING和从STRING转换成INT型的函数

    CStr 函数示例本示例使用 CStr 函数将一数值转换为 String. Dim MyDouble, MyStringMyDouble = 437.324   ' MyDouble 为 Double ...

  9. 位图算法 C语言

    #include <stdio.h> void set_bit(void *base, unsigned long n) { unsigned long *m = (unsigned lo ...

  10. EXCEPTION-JS

      CreateTime--2016年11月22日13:00:55Author:Marydon 声明:异常类文章主要是记录了我遇到的异常信息及解决方案,解决方案大部分都是百度解决的,(这里只是针对我遇 ...