Rsync+inotify实时备份

安装inotify

1
2
3
sudo apt install inotify -y
inotifywait -h
inotifywatch -h

安装rsync

1
2
3
4
5
sudo apt install rsync

# 因为是在自己本地做测试,做一个自己的登录免密
ssh-keygen
ssh-copy-id -i 10.0.3.26

编写脚本实现同步

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vim miner_dir_backup.sh
#!/bin/bash

dst_ip='10.0.3.26'
src_dir='/home/caslx/disk_md0/lotusminer'
dst_dir='/home/caslx/disk_md0/nfs_storage/backup/lotusminer'

inotifywait -mrq --format '%w%f' -e modify,delete,create,attrib ${src_dir} \
| while read file
do
if [ ! -e $file ];
then
ssh ${dst_ip} rm -rf ${dst_dir}/`basename ${file}` &>/dev/null
else
rsync -avz --progress ${file} caslx@${dst_ip}:${dst_dir}/`basename ${file}` &>/dev/null
fi
done

# 后台运行
nohup bash miner_dir_backup.sh &

zabbix监控实时备份状态

编写脚本判断是否实时同步,将状态写入到指定文件

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
26
27
28
29
30
31
32
#!/bin/bash


### 检查备份目录是否同步正常

time=`date "+%Y-%m-%d %H:%M:%S"`

src_dir='/home/caslx/disk_md0/lotusminer'
dst_dir='/home/caslx/disk_md0/nfs_storage/backup/lotusminer'


echo ${time} >> ${src_dir}/check.txt

sleep 3

# 判断校验文件是否存在
if [ ! -f ${dst_dir}/check.txt ]
then
# 如果不存在输出0
echo 0
else
# 判断校验文件的内容是否同步过去
num=grep "${time}" ${dst_dir}/check.txt | wc -l
# 如果没有同步过去,输出0
if [ ${num} -eq 0 ]
then
echo 0
else
# 同步过去输出1
echo 1
fi
fi

编辑zabbix-agent配置

1
2
3
4
5
6
7
8
9
10
11
sudo vim /etc/zabbix/zabbix_agentd.conf

# 判断目录实时同步状态
UserParameter=miner_dir_sync_status,/usr/bin/bash /home/caslx/zabbix/scripts/zabbix_agent_run_scripts/check_miner_dir_backup.sh

# 重启agent服务
systemctl restart zabbix-agent


### 赋予check.txt权限
chmod 777 /home/caslx/disk_md0/lotusminer/check.txt

本文标题:Rsync+inotify实时备份

文章作者:尚先森

发布时间:2022年09月07日 - 14:58:30

最后更新:2023年02月20日 - 18:09:15

原始链接:https://imauu.gitee.io/2022/09/07/Rsync-inotify实时备份/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

尚先森 wechat
有任何问题可以扫描上方二维码私聊我哦😊
您的支持是我创作的最大动力^_^