脚本实现定时自动备份
[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、有利有弊,慎用