rsync实现数据备份详解(4)

脚本实现定时自动备份 

[root@xiaolyu77 ~]# vim autobackup.sh 

#!/bin/bash
rsync -avz rsyncuser@xiaolyu76::wwwroot --password-file=passfile /web-back/

rsync实现数据备份详解

定时自动备份:每天凌晨3:01自动进行备份。

[root@xiaolyu77 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root

四、Rsync+Inotify 实时同

  Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。可以监控某个用户,什么时间,做了什么动作!

  使用 rsync 工具与 inotify 机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。

下载地址:                 notify-tools-3.13

我们把xiaolyu76上/var/www/html目录实时同步到xiaolyu77的/web-back目录中

1. 查看内核支持inotify和调整

[root@xiaolyu76~]# uname -r                //inotify从kernel2.6.13开始正式并入内核,开始支持

2.6.32-431.el6.x86_64

[root@xiaolyu76 ~]# ls /proc/sys/fs/inotify/                 //查看调控参数

max_queued_events         #表示监控时间队列           默认16384 可以使用cat命令查看

max_user_instances          #表示最多监控实例数        默认128

max_user_watches           #表示每个实例最多监控文件数    默认8192

rsync实现数据备份详解

#在Linux内核中,默认的Inotify机制提供了三种调控参数,当要监控的目录,文件数比较多的时候或者变化比较频

繁的时候,要加大三个数值

可以直接修改/etc/sysctl.conf配置文件,将管理队列设置为32786,实例数:1024,文件数:9000000(大于监控目标总数即可)

[root@xiaolyu76 ~]# vim /etc/sysctl.conf

#在末尾添加下面三行

fs.inotify.max_queued_events =32768

fs.inotify.max_user_instances =1024

fs.inotify.max_user_watches =90000000

 

rsync实现数据备份详解

2. 安装inotify-tools

安装 inotify-tools 后,将拥有 inotifywait、inotifywatch 辅助工具程序,从而来监控、汇总文件系统改动情况。

[root@xiaolyu76~]# tar xvf inotify-tools-3.13.tar.gz -C /usr/local/src/;echo $?

[root@xiaolyu76 ~]# cd /usr/local/src/inotify-tools-3.13/

[root@xiaolyu76 inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify-tools ; make ; make install ;echo $?

 注意:每一步做完了,要echo $?看一下是否成功,尤其是在非常大的源码包安装时。

也可以通过yum方式来安装:yum install inotify*  -y  //傻瓜式安装,哈哈。

3.测试inotifywait

       使用 inotifywait 命令监控网站目录/var/www/html发生的变化。然后在另一个终端向/var/www/html目录下添加文件、移动文件,查看屏幕输出结果。

[root@xiaolyu76 ~]# ln -s /usr/local/inotify-tools/bin/* /usr/bin/        //方便直接调用命令,当然了,也可以直接复制到/usr/bin下面的。随意啦。

inotifywait常用参数:

-e  用来指定要监控哪些事件。这些事件包括: create 创建,move 移动,delete 删除,modify 修改文件内容,attrib 属性更改。

-m 表示持续监控

-r  表示递归整个目录

-q 表示简化输出信息。

在监控终端执行下面的命令:

[root@XueGod6 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

另外开一终端,做一些改动

[root@xiaolyu76 ~]# echo "watch rsync" > /var/www/html/watch.html
[root@xiaolyu76 ~]# mkdir /var/www/html/test
[root@xiaolyu76 ~]# cp /etc/passwd /var/www/html/test/
[root@xiaolyu76 ~]# rm -rf /var/www/html/test/passwd

查看监控终端

/var/www/html/ CREATE watch.html
/var/www/html/ MODIFY watch.html
/var/www/html/ CREATE,ISDIR test
/var/www/html/test/ CREATE passwd
/var/www/html/test/ MODIFY passwd
/var/www/html/test/ DELETE passwd

监控端执行命令后,进入监控等待:

发起终端:

rsync实现数据备份详解

监控终端变为:

rsync实现数据备份详解

#使用 inotifywait 输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。

4.触发式同步脚本

首先要做好免密码链接

 #说明:本质上,scp,rsync都是ssh登录,前面博客已经详细说过ssh免密码登录,这里一笔带过。

[root@xiaolyu76 ~]# ssh-keygen

[root@xiaolyu76 ~]# ssh-copy-id root@xiaolyu76

编写脚本

[root@xiaolyu76 ~]# vim inotify.sh #!/bin/bash src=/var/www/html dest=root@xiaolyu77:/web-back inotifywait -mrq -e modify,delete, create,attrib ${src} | while read D E F do /usr/bin/rsync -avz --delete $src $dest done

[root@xiaolyu76 ~]# chmod +x inotify.sh ; echo "sh /root/inotify.sh &" >> /etc/rc.local

 说明:上面脚本中的三个变量,就对应

inotifywait -mrq -e modify,delete, create,attrib ${src} 执行后的结果中的三列,例如:

rsync实现数据备份详解

只要检测到变动时间,执行rsync上行同步操作,拉数据。
脚本执行的检测终端:

rsync实现数据备份详解

发起变化的终端:

rsync实现数据备份详解

除了上面rsync + inotify的备份方法,还有rsync + sersync。 当有海量的小数据文件的时候,inotify 会有延迟!然而,rsync + sersync 也很危险。

当黑���将你的数据删除后,rsync + sersync 后将删除同步更新到你的备份数据。慎用!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7bbf65f5df5a30491413a6dbab442f27.html