rsync+inotify实时同步

linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以很方便地实现文件异动警告、增量备份,并针对目录或文件的变化及时作出响应。
将rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)——只要原始位置的文件发生变化,则立即启动增量备份操作,否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性,周期过密等问题。

配置过程:

    1、调整inotify内核参数:
    在linux内核中,默认的inotify提供了三个跳空参数:max_queue_events、max_user_instances、max_user_watches,分别表示监控事件队列(16384)、最多监控实例数(128)、每个实例最多监控文件数(8192)。

这里写图片描述

    当要监控的目录、文件数较多或变化较频繁时,建议加大这三个参数的值。例如,可直接修改/etc/sysctl.conf配置文件,将管理队列设为32768,实例数设为1024,监控数设为1048 576(建议大于监控目标的总文件数)。

这里写图片描述
这里写图片描述

    2、安装inotify-tools
    使用inotify机制还需要安装inotify-tools,以便提供inotifywait、inotifywatch辅助工具程序,用来监控,汇总改动情况。inotify-tools可以从网站http://inotify-tools.sourceforge.net/下载。
    我是在http://download.csdn.net/download/mchdba/7564775这里下载的。

这里写图片描述
接着make && make install

    以监控网站目录 /var/www/html为例,可以先执行inotifywait命令,然后在另一个终端向/var/www/html目录下添加文件、移动文件、跟踪屏幕输出结果。其中选项“-e”用来指定要监控哪些事件,选项“-m”表示持续监控,选项“-t”表示递归整个目录,选项“-q”简化输出信息。

这里写图片描述

inotifywait可监控modify(修改)、create(创建)、move(移动)、delete(删除)attrib(属性更改)等各种事件,一有变动立即输出结果,inotifywatch可用来手机文件系统变动情况,并在运行结束后输出汇总的变化情况,关于这两个命令的详细用法可以参照man手册页,配置触发备份任务时只要用到inotifywait就可以了。

3、编写触发式同步脚本:(转载)
#!/bin/sh
src=/data/www/wwwroot/ #A上的需要备份的文件路径
des=linuxhome #B上备份文件的路径 daemon别名
ip=192.168.1.101 #B的IP地址
user=linux
/usr/local/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ \
-e modify,delete,create,attrib \
src |whilereadfiledorsyncavzdeleteprogresspasswordfile=/etc/rsyncd.pass {src} user@ {ip}::{des} &&  
                    #echo “
{src} was rsynced”
#echo “—————————————————–”
done
注:–password-file存放用户${user}的密码

将rsync.sh添加到开机启动:

sed -i ‘$i \/usr/local/sbin/rsync.sh’ /etc/rc.local

写法二:

cd /usr/local/sbin

vi rsync.sh //分别在两台机器上创建如下脚本,另一台改一下IP地址即可.

!/bin/sh

src=/data/www/wwwroot/
des=/data/www/wwwroot
ip=192.168.1.101

/usr/local/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ \
-e modify,delete,create,attrib \
src |whilereadfiledorsyncavzdeleteprogress {src} root@ ip: {des} &&
#echo “${src} was rsynced”
#echo “—————————————————–”
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值