Rsync+Inotify

在客户端安装,首先查看是否支持

[root@rsync-c ~]# ll /proc/sys/fs/inotify/

总用量 0

-rw-r–r– 1 root root 0 7月   8 16:40 max_queued_events

-rw-r–r– 1 root root 0 7月   8 16:40 max_user_instances

-rw-r–r– 1 root root 0 7月   8 16:40 max_user_watches

有这2个文件即支持。

解压安装

tar -zxvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure –prefix=/usr/local/inotfiy

make && make install

人工监控创建,打开另一窗口操作,这个窗口监控。

监控创建监听目录

[root@rsync-c ~]# inotifywait -mrq –timefmt ‘%d/%m/%y-%H:%M’ –format ‘%T %w%f’ -e create /backup

同时监控 创建,删除,写入

inotifywait -mrq –timefmt ‘%d/%m/%y-%H:%M’ –format ‘%T %w%f’ -e create,delete,close_write /backup

监控脚本,客户端写入删除操作同步写入到 服务端指定的目录中。

#!/bin/bash

host1=”192.168.199.235″

src=/backup  源目录

dst=www     目的目录

user=backup   rsync用户

passfile=/etc/rsyncd.passwd   密码文件路径

if [ ! –e “$src” ] \

|| [ ! –e “${passfile}” ] \

|| [ ! –e “/usr/bin/rsync” ] \

Then

        echo “ ”

inotifywait -mrq –timefmt ‘%d%m%y %H:%M’ –format ‘%T %w%f’ -e close_write,delete,create,attrib $src \

|while read file

        do

        cd $src && rsync -aruz -R –delete ./ –timeout=100 $user@$host1::$dst –password-file=${passfile} 2>&1

        done

exit 0

也可以用一个做写入监控同步,一个做删除监控同步

写入监控同步:

[root@rsync-c scripts]# cat cr.sh

#!/bin/bash

host1=”192.168.199.235″

src=/backup

dst=www

user=backup

passfile=/etc/rsyncd.passwd

inotifywait -mrq –format ‘%w%f’ -e close_write,create $src \

|while read line

        do

        rsync -az $line  $user@$host1::$dst –password-file=${passfile} 2>&1

        done

exit 0

删除监控同步:

#!/bin/bash

host1=”192.168.199.235″

src=/backup

dst=www

user=backup

passfile=/etc/rsyncd.passwd

inotifywait -mrq –timefmt ‘%d%m%y %H:%M’ –format ‘%T %w%f’ -e delete $src \

|while read file

        do

        cd $src && rsync -aruz -R –delete ./ –timeout=100 $user@$host1::$dst –password-file=${passfile} 2>&1

        done

exit 0