有两台Linux服务器A和B,假如A可以直接ssh到B,不用输入密码。
A和B都有一个目录叫做/data/web/ 这下面有很多文件,当然我们不知道具体有几层子目录,假若之前A和B上该目录下的文件都是一模一样的。
但现在不确定是否一致了。固需要我们写一个脚本实现这样的功能,检测A机器和B机器/data/web/目录下文件的异同,我们以A机器上的文件作为标准。
比如,假若B机器少了一个a.txt文件,那我们应该能够检测出来,或者B机器上的b.txt文件有过改动,我们也应该能够检测出来(B机器上多了文件不用考虑)。
核心要点
md5sum 通过文件的md5值比较文件
shell脚本嵌入文档1
2
3cat > file.txt <<"EOF"
xxx
EOF
代码内容
1 |
|
或者1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
targetdir=/data/web
b_ip=1.1.1.1
filea=/tmp/file.list
fileb=/tmp/file_b.list
find $targetdir/ -type f |xargs md5sum > $file.list
ssh $b_ip "find $targetdir/ -type f |xargs md5sum > $file_b.list"
scp $b_ip:$file_b.list /tmp/
for i in $(awk '{print $2}' $file.list)
do
if grep -qw "$i" $file_b.list
then
md5_a=$(grep -w "$i" $file.list |awk '{print $1}')
md5_b=$(grep -w "$i" $file_b.list |awk '{print $1}')
if [ $md5_a != $md5_b ]
then
echo "$i is changed..."
fi
else
echo "$i is not exist..."
fi
done