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

原文地址:https://www.cnblogs.com/koushuige/p/9173985.html