每份相同数据(文件夹)都可以生成一份唯一的md5校验文件,我们可以通过直接校验整个数据文件夹的方法来确定数据是否有误。

1.针对整个文件夹生成md5校验文件方法:

以data文件夹为例,我们需要得到data整个文件夹中的文件的md5校验值,我们通过shell程序对整个data文件夹中的文件进行md5校验。

通过如下命令获得整个data文件夹的md5校验文件:

 cd  data
find ./ -type f -print0 | xargs md5sum > data_temp.md5
cat data_temp.md5 | sort > data.md5

(找出data文件中的每个文件并获得该文件的md5值存入data_temp.md5

中 ,然后对md5值的文件进行排序获得data.md5校验文件)

data.md5文件中数据格式如下,前面的字符串是该文件的md5值,后面的是该文件相对data文件夹的路径。由于每个不同文件的md5值都唯一,每个文件的路径都不同,所以排序之后,同样的文件夹生成的该md5文件都是唯一的

040173e4c2c29787cd0e644bd3737f8f  ./preinstall/Babaqunaer_1.3.6.apk

0054b51601427b2630793d43ed0b224c  ./pcvoice/7.mp3

2.生成md5校验文件程序:

#!/bin/bash
# author: huinatianyun
# Updated Date:--
# Set environment variables LANG=""
export LANG
#这里必须要设置语言环境,因为sort排序是对文件的每一行作为一个单位,相互比较,比较原则是从首字符向后依次进行比较,语言环境不同,字符的编码可能就不一样,所以会导致文件文件排序结果不一致,LANG=""表示默认设置为en_US
echo ""
echo ""
echo "please put generate_md5_value.sh, custdata.tar, hpdata.tar, hwapudata.tar in the same directory,"
echo "" read -p "are you put generate_md5_value.sh in the right position ? (Y/N): " select_yn echo "" echo "" if [ "$select_yn" == "Y" ] || [ "$select_yn" == "y" ]; then echo "start generate data.md5 ..." cd ./data find ./ -type f -print0 | xargs - md5sum | sort > ../data.md5 #xargs 命令-0是表示以空字符作为分隔符,因为有些目录的名字是含有空格的,而xargs是默认是以空格为分割符的,它会误认为还有空格的目录的路径为两个路径,换成空字符就是消除这个问题 echo "generate md5 value over" elif [ "$select_yn" == "N" ] || [ "$select_yn" == "n" ]; then echo "stop generate md5 value !" else echo "I don't know what your choice is !!!" fi
 

3.数据校验方法:

通过上述方法对data文件夹里数据生成一份md5校验文件,这个md5文件就这可作为这个data文件夹的校验文件,校验一个文件夹数据是否和data相同的方法就是针对该文件夹通过同样的方法生成一份md5校验文件,然后比对校验文件是否相同,如果两个文件相同,这认为这两个比对的数据文件夹一致

文件夹进行MD5校验的实现算法的更多相关文章

  1. 文件CRC和MD5校验

    文件CRC和MD5校验 CRC和MD5用于文件和数据的传输校验,以确认是否接收成功. unit CRCMD5; interface { 获取文件CRC校验码 } function GetFileCRC ...

  2. Java 读取网络资源文件 获取文件大小 MD5校验值

    Java 读取网络资源文件 获取文件大小 MD5校验值 封装一个文件操作工具类: package c; import java.io.*; import java.net.HttpURLConnect ...

  3. 三、Socket之UDP异步传输文件-多文件传输和文件MD5校验

    本文接着上一篇文章二.Socket之UDP异步传输文件,在上一篇文章的基础上实现多文件的传输和文件传输完成后进行完整性校验. 要实现多文件的传输,必须要对文(2)中发送文件的数据格式进行改进,必须加入 ...

  4. shell脚本实现查找文件夹下重复的文件,并提供删除功能

    Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...

  5. MD5校验

    好久没有写随笔了,正好这两天可以休整一下,借此机会总结下最近使用python的小体会. 个人体会文件校验在下载文件时使用较多,在linux下最简单的实现方式就是: 1 $ md5sum filenam ...

  6. Shell 对整个文件夹中的文件进行MD5校验 [转]

    查看本地文件的 MD5 命令:md5sum FileName查看home目录下所有文件的 MD5 码:cd ~find /home -type f -print0 | xargs -0 md5sum ...

  7. Linux下校验下载文件的完整性(MD5,SHA1,PGP)

    查看: Linux下校验下载文件的完整性(MD5,SHA1,PGP) http://blog.useasp.net/archive/2014/03/29/use-md5-sha1-or-pgp-to- ...

  8. Java 获取 文件md5校验码

    讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...

  9. python tcp黏包和struct模块解决方法,大文件传输方法及MD5校验

    一.TCP协议 粘包现象 和解决方案 黏包现象让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd)执行远程命令的模块 需要用到模块subprocess sub ...

随机推荐

  1. Java 内存区域和GC机制(转载)

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  2. mongodb安装的两条命令

    1. 安装 下载并安装,注意安装方式为custom,路径自定义(d:\chengxu\mongodb),安装成功后在mongodb文件夹下新建data文件夹(内新建db文件夹)和logs文件夹(内新建 ...

  3. 用Fiddler 发送post请求

    在调试web api的时候,若是get 请求,可以直接在浏览器里查看结果,如果是put,或者post请求在浏览器地址栏里就没有办法了. 下面介绍一下,如何利用fiddler模拟post请求. 也可以用 ...

  4. (41)JS运动之右側中间悬浮框(对联悬浮框)

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  5. mysql-ubuntu14.04彻底卸载mysql

    删除mysql的数据文件 sudo rm /var/lib/mysql/ -R 删除mysql的配置文件 sudo rm /etc/mysql/ -R 自动卸载mysql(包括server和clien ...

  6. unity prefab使用原则

    prefab可无限apply: 如果把一个模块做成了prefab,这个prefab可能在同一个scene中添加多个,甚至添加到了多个scene中.设所有这些实例为instance(1),instanc ...

  7. void *指针的加减运算

    1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...

  8. Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案

    Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案 1. 业务场景 android+webview h5 css背景图性能提升1 2. ...

  9. [elk]es增删改查最佳实战

    PUT app01 GET app01/_settings GET _all/_settings PUT app01/_settings { "number_of_replicas" ...

  10. JS高程3:表单脚本

    HTML和CSS对表单的操作还是比较乏力的,在表单操作中,JS势必会使用到. 基础知识 文本框 选择框 序列化 富文本编辑器 基础知识 HTMLFormElement接口可以创建或者修改<for ...