RSync实现数据备份(4)

脚本实现定时自动备份

[root@XueGod64 ~]# vim autobackup.sh #!/bin/bash rsync -avz rsyncuser@192.168.0.63::wwwroot --password-file=passfile /backup/ [root@XueGod64 ~]# chmod +x autobackup.sh [root@XueGod64 ~]# chmod +x autobackup.sh [root@XueGod64 ~]# rm -rf /web-back/* //测试脚本 [root@XueGod64 ~]# sh autobackup.sh [root@XueGod64 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root

Rsync+Inotify 实时同步

Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
可以监控某个用户,什么时间,做了什么动作!
使用 rsync 工具与 inotify 机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。
下载地址: notify-tools-3.13
我们把XueGod63上/var/www/html目录实时同步到XueGod64的/web-back目录中
查看内核支持inotify和调整

[root@XueGod63 ~]# uname -r //inotify从kernel2.6.13开始正式并入内核,开始支持 2.6.32-431.el6.x86_64 [root@XueGod63 ~]# ls /proc/sys/fs/inotify/ //查看调控参数 max_queued_events #表示监控时间队列 默认16384 可以使用cat命令查看 max_user_instances #表示最多监控实例数 默认128 max_user_watches #表示每个实例最多监控文件数 默认8192 #在Linux内核中,默认的Inotify机制提供了三种调控参数,当要监控的目录,文件数比较多的时候或者变化比较频 繁的时候,要加大三个数值 可以直接修改/etc/sysctl.conf配置文件,将管理队列设置为32786,实例数:1024,文件数:9000000(大于监控目标总数即可) [root@XueGod63 ~]# vim /etc/sysctl.conf …… #末尾添加下面三行 fs.inotify.max_queued_events =32768 fs.inotify.max_user_instances =1024 fs.inotify.max_user_watches =90000000 安装inotify-tools 安装 inotify-tools 后,将拥有 inotifywait、inotifywatch 辅助工具程序,从而来监控、汇总文件系统改动情况。 [root@XueGod63 ~]# tar xvf inotify-tools-3.13.tar.gz -C /usr/local/src/ [root@XueGod63 ~]# cd /usr/local/src/inotify-tools-3.13/ [root@XueGod63 inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify-tools ; make ; make install 也可以通过yum方式来安装:yum install inotify* 测试inotifywait 使用 inotifywait 命令监控网站目录/var/www/html发生的变化。然后在另一个终端向/var/www/html目录下添加文件、移动文件,查看屏幕输出结果。 [root@XueGod63 ~]# cd ; ln -s /usr/local/inotify-tools/bin/* /usr/bin/ //方便直接调用命令 inotifywait常用参数: -e 用来指定要监控哪些事件。这些事件包括: create 创建,move 移动,delete 删除,modify 修改文件内容,attrib 属性更改。 -m 表示持续监控 -r 表示递归整个目录 -q 表示简化输出信息。 [root@XueGod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/ 另外开一终端,做一些改动 [root@xuegod63 ~]# echo aaa > /var/www/html/a.html [root@xuegod63 ~]# mkdir /var/www/html/test [root@xuegod63 ~]# cp /etc/passwd /var/www/html/test/ [root@xuegod63 ~]# rm -rf /var/www/html/test/passwd 查看监控终端 /var/www/html/ CREATE a.html /var/www/html/ MODIFY a.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 #使用 inotifywait 输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。 使用触发试同步脚本 首先要做好免密码链接 [root@XueGod63 ~]# ssh-keygen [root@XueGod63 ~]# ssh-copy-id root@192.168.1.64 编写脚本 [root@XueGod63 ~]# vim inotify.sh #!/bin/bash SRC=https://www.linuxidc.com/var/www/html DST=root@192.168.1.64:/web-back inotifywait -mrq -e modify,delete,create,attrib ${SRC}|while read D E F do /usr/bin/rsync -avz --delete $SRC $DST done #思路:只要检测到变动时间,执行rsync上行同步操作,拉数据 #while read D E F是是哪个变量,前面输出的内容是三段,每一段对应的就是后面的D E F [root@XueGod63 ~]# chmod +x inotify.sh ; echo "sh /root/inotify.sh &" >> /etc/rc.local 补充: 1、推荐了解下:rsync+sersync 当有海量的小数据文件的时候,inotify 会有延迟!! 2、有利有弊,慎用

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

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