自动校验文件夹及其内容shell程序(md5 校验文件夹中所有数据)
来源:互联网 发布:在哪买淘宝号安全 编辑:程序博客网 时间:2024/05/30 02:24
一.问题的来源
有时候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
有时候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
- 自动校验文件夹及其内容shell程序(md5 校验文件夹中所有数据)
- md5校验文件数据
- shell编程的MD5校验
- shell脚本md5校验方法
- Linux 文件夹中的文件校验
- c语言 遍历搜索文件夹(获取文件夹中所有内容)
- python中md5文件校验
- md5校验
- MD5校验
- md5校验
- MD5校验
- 拷贝文件夹及其所有内容,支持单个文件
- c++ 复制文件夹及其内所有子文件内容
- BAT遍历所有文件夹及其子文件夹
- struts2中数据校验
- springmvc中数据校验
- SHELL文件夹及其子文件夹的遍历
- 数据校验杂谈——CRC,MD5和SHA-1原理、实现及其破解[转]
- Oracle 权限的几种操作/管理方法
- MFC文件操作
- Windows CE6.0操作系统映像文件格式的研究
- iPhone开发阶段性总结
- MFC文件操作大全
- 自动校验文件夹及其内容shell程序(md5 校验文件夹中所有数据)
- 关于分数化小数的问题
- const char*, char const*, char*const的区别 .
- 链式队列操作
- 与周鸿祎谈乔布斯
- MFC文件操作二
- 开发Android必备的java基础
- 回调函数以及钩子函数的概念
- 简单的TCP协议 socket编程(C语言版服务器和客户端)