自动校验文件夹及其内容shell程序(md5 校验文件夹中所有数据)

一.问题的来源
有时候copy一些重要的数据,得到之后需要与原数据进行核对是否数据一致。这就需要进行校验。


二.问题的分析
校验数据有多种方法,最简单的是使用文件的md5码进行校验。但是文件很多,手动的每个文件进行md5校验显然不合适,这就需要编写shell程序解决。


三.问题的解决
通过shell程序解决文件校验问题
1.通过命令得到文件md5值
比如得到的数据文件夹为 data 文件夹
则在data 文件夹中输入以下命令


find  ./ -type f  -print | xargs md5sum  > /tmp/md5.1
cd /tmp
cat md5.1 | sort > md5.1.1
rm md5.1  
mv   md5.1.1  md5.1


2.在原数据文件夹中 data 文件夹中输入以下命令
find ./ -type f -print | xargs md5sum > /tmp/md5.2
cd /tmp
cat md5.2 | sort > md5.2.1
rm md5.2
mv md5.2.1  md5.2


3.把上面得到的md5.1  和md5.2放到同一个服务器同一个目录下,比如从server_1  scp 到server_2下
scp  server_1:/tmp/md5.1   /tmp/


4.执行 diff 如果输出为空,则说明数据一直,否则,说明数据不一致
diff   /tmp/md5.1  /tmp/md5.2


四.总体思路
通过得到原文件夹下和新文件夹下的所有文件的md5值,然后把md5值进行排序,最后比较两md5值是否相同即可


五.注意 
实际上  上述操作中的md5.1  (或md5.2) 中的内容是 "文件名     md5值" 的格式。


六.全自动shell程序
比如 有两台机器  server_1  和server_2  ,刚从server_1 上的  /home/longxibendi/ 下scp 的 data文件夹到 server_2 的 /home/longxibendi/ 下


程序如下:
#!/bin/bash
#author  longxibendi
#function  check   file1  and file2    use  their md5 
#support   folder


cd /home/longxibendi/data


find  ./ -type f  -print | xargs md5sum  > /tmp/md5.1
cd /tmp
cat md5.1 | sort > md5.1.1
rm md5.1  
mv   md5.1.1  md5.1


ssh   longxibendi@server_2


cd /home/longxibendi/data


find ./ -type f -print | xargs md5sum > /tmp/md5.2
cd /tmp
cat md5.2 | sort > md5.2.1
rm md5.2
mv md5.2.1  md5.2


scp   server_1:/tmp/md5.1   /tmp/md5.2


# if  file1 and file2 is same ,then   print  It is OK  
# else  if  file1 and file2 is different ,then print  They are different
if [ -z "`diff md5.1 md5.2`" ] ;then
        echo "It is OK";
else
        echo "They are different";
fi

声明:本文档可以随意更改,但必须署名原作者

作者:凤凰舞者 qq:578989855



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fastcopy功能特点 1.完全支持拖曳操作,支持拖曳多个文件到来源; 2.支持外壳整合,方便利用右键菜单直接复制文件; 3.支持三种不同的HDD模式; 4.内建多种人性化的操作模式; 5.支持过滤,可以使用通配符; 6.支持任务管理; 7.支持命令行操作; 8.软件十分小巧,甚至可以在安装后,直接将安装目录的文件复制到任何可移动存储设备,方便携带,随取随用; 9.所有的复制操作都是通过“从介质(硬盘)读数→写入数→从缓存读出→向介质(硬盘)写入数”这几项步骤来完成的,并且这些步骤都是多个线程同时进行的,如果线程之间的协同运作不够完美,那速度就会大打折扣,有些线程忙得要命,而有些却必须等待,FASTCOPY就是优化了它们之间的工作顺序,大大提高了速度。 10.易于使用,能够充分挖掘文件系统和硬盘的传输能力。 11.支持计数和计时,在很多专业的硬盘传输速度的评测,FastCopy 成了不二之选! Fastcopy使用 1、指定源目录、目标目录 点击“源目录”、“目标目录”可以分别为其指定要复制的内容及目标文件夹。复制的内容可以是文件夹或文件。目标目录结尾键入“\”表示拷贝时要包括源目录本身及其内容;结尾不键入“\”表示只拷贝源目录下的内容。 用拖拽的方式同样可以指定源目录、目标目录。这样很方便,随着在资源管理器浏览就可以将复制对象确定下来。另外,可以通过“设置”菜单的“外壳扩展”为右键菜单建立“复制”与“删除”命令。 2、选择不同的操作方式 通过“目标目录”文本框下的下拉菜单按钮就可以挑选七种不同的操作方式。这里,复制项相对多些,都是在复制时经常会遇到的处理办法。 “移动”项是将“源目录”内容移动到“目标目录”去,源目录内容消失;“全部删除”项是关闭“目标目录”,只对源目录内容进行处理。对于固定拷贝的操作可以建立一个任务,通过“任务菜单”菜单的“添加/更新/删除”命令创建,方便一键就可复制或删除。 3、常规设置、硬盘模式定义 在“设置→常规设置”菜单可以定义缓存的间大小,它直接关系到复制时的速度快慢,现在机器配置都很强悍,这里设定值高些不成问题。相关的定义有I/O缓存设置、I/O设置、复制和删除、日志写入等项目。 硬盘模式的设置是为了在读写时对缓存的操作方式,默认下为自动硬盘模式,另外两种分别是相同硬盘模式、不同硬盘模式,可以根自己机器的配置来选择。相同硬盘模式是指用大的缓存进行读入,直到缓存满额,再转入大缓存写入;不同硬盘模式则是读写缓存多线程并行进行。 4、执行后的结果查询 在执行过程会显示读取、写入、时间、传输效率、文件速率等信息,在下方的文本框会显示当前拷贝的内容。拷贝完成后点击“显示列表”按钮可以查看拷贝内容及错误文件、目录信息。 软件对于拷贝和删除小文件或文件夹来讲,可能就有点大材小用了。对于大型的文件和文件夹就不同了,它能非常迅速的完成要拷贝的内容,通过简单的设置还能过滤不要的内容。体积小、方便携带、操作迅速。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值