脚本实现定时自动备份
[root@xiaolyu77 ~]# vim autobackup.sh
#!/bin/bash
rsync -avz rsyncuser@xiaolyu76::wwwroot --password-file=passfile /web-back/
定时自动备份:每天凌晨3:01自动进行备份。
[root@xiaolyu77 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root
四、Rsync+Inotify 实时同步Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。可以监控某个用户,什么时间,做了什么动作!
使用 rsync 工具与 inotify 机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。
我们把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
#在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
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
监控端执行命令后,进入监控等待:
发起终端:
监控终端变为:
#使用 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 + inotify的备份方法,还有rsync + sersync。 当有海量的小数据文件的时候,inotify 会有延迟!然而,rsync + sersync 也很危险。
当黑���将你的数据删除后,rsync + sersync 后将删除同步更新到你的备份数据。慎用!