Linux系统shell脚本之检测两台服务器指定目录下的文件一致性
Posted 江湖有缘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统shell脚本之检测两台服务器指定目录下的文件一致性相关的知识,希望对你有一定的参考价值。
Linux系统shell脚本之检测两台服务器指定目录下的文件一致性
一、脚本要求
检测两台服务器指定目录下的文件一致性
二、脚本内容
#!/bin/bash
##########################################################
#File Name:md5_file.sh
#Version:V1.0
#Aurhor:
#Emali:
#Created Time:2022-05
#Description: create files & modify files
##########################################################
#检测两台服务器指定目录下的文件一致性
DIR=/data/mysql
REMOTEIP=192.168.3.71
#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中
find $DIR -type f|xargs md5sum > /tmp/md5_a.txt
ssh $REMOTEIP "find $DIR -type f|xargs md5sum > /tmp/md5_b.txt"
scp $REMOTEIP:/tmp/md5_b.txt /tmp #将远端的MD5值的文件拷贝到本端
#将文件名作为遍历对象进行一一比对
for i in `awk 'print $2' /tmp/md5_a.txt`
do
#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果
if grep -qw "$i" /tmp/md5_b.txt
then
md5_a=`grep -w "$i" /tmp/md5_a.txt|awk 'print $1'`
md5_b=`grep -w "$i" /tmp/md5_b.txt|awk 'print $1'`
#当文件存在时,如果md5值不一致则输出文件改变的结果
if [ $md5_a != $md5_b ]
then
echo "$i changed."
fi
else
echo "$i deleted."
fi
done
三、测试设置
1.server1创建文件
[root@192 mysql]# touch file0..10
[root@192 mysql]# ls
file0 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
[root@192 mysql]# echo hello >> file1
[root@192 mysql]# echo world >> file8
[root@192 mysql]# echo file >> file3
2.server2创建文件
[root@node01 ~]# mkdir -p /data/mysql
[root@node01 ~]# cd /data/mysql/
[root@node01 mysql]# ls
[root@node01 mysql]# touch file0..10
[root@node01 mysql]# echo hello >> file1
[root@node01 mysql]# echo diff >> file2
3.配置ssh免密
在这里插入代码片
四、执行脚本
[root@192 scripts]# ./md5_file.sh
md5_b.txt 100% 573 272.6KB/s 00:00
/data/mysql/file2 changed.
/data/mysql/file3 changed.
/data/mysql/file8 changed.
[root@192 scripts]#
以上是关于Linux系统shell脚本之检测两台服务器指定目录下的文件一致性的主要内容,如果未能解决你的问题,请参考以下文章