rsync+inotify-tools实时备份脚本
1.1 实时备份
1.需求分析:
为什么要实时复制
因为nfs是单点非常的不安全 而通过定时任务备份会造成数据丢失 这是就需要需要实时备份
2实时方案
1).搭建好服务端backup与客户端nfs的rsync服务,使可以备份数据
a.服务端backup配置文件:
[root@rsync-backup ~]# cat /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
secrets file = /etc/rsync.password
[backup]
path = /rsync_backup
auth users = rsync_backup
创建校验文件 并将权限改为600
[root@rsync-backup ~]# cat /etc/rsync.password
rsync_backup:ms
创建用户 rsync 创建目录/ rsync_backup 并将属主属组改为rsync
b.客户端nfs
创建校验文件 并将权限改为600
[root@nfs01 /backup]# cat /etc/rsync.password
ms
创建要备份的目录/backup
2.)在nfs上搭好inotify-tools 使其可以监控事件
上文已将其安装,这里测试命令
端口1监控
[root@nfs01 /backup]# inotifywait --format '%w%f' -rmqe create,delete,close_write /backup/
/backup/a.txt
端口2测试
[root@nfs01 /backup]# rm -f a.txt
3)编写脚本 使当所监控的文件夹有事件发生时 立即备份
#!/bin/bash
inotifywait --format '%w%f' -rmqe create,delete,close_write /backup/|\
while read line
do
rsync -az /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password
done
检测有效
4)脚本的优化
#!/bin/bash
inotifywait --format '%w%f' -rmqe create,delete,close_write /backup/|\
while read line
do
if [ -e $line ];then
rsync -az $line rsync_backup@backup::backup --password-file=/etc/rsync.password
fi
cd /backup/ && rsync -az /backup/ --delete rsync_backup@backup::backup --password-file=/etc/rsync.password
done
if 判断如果文件存在 将新创建的文件备份到backup服务器上
如果不存在 无差异备份一下
额外补充
watch ls /rsync_backup/ 每个2秒执行一下ls命令
将脚本放入后台执行[root@nfs01 /server/scripts]# sh nfs-backup.sh &
[1] 9137