系统环境:centos 6.4
需要软件:inotify,rsync
主机规划:172.16.1.220 172.16.1.218
需求:将172.16.1.218上面的/usr/local/218backup文件夹下面的数据实时同步到/usr/local/220backup文件夹下面,(生产环境慎用,因为一台服务器上面的数据丢失,可能导致远程备份服务器上面的数据也丢失)。
步骤:
首先在两台主机上面分别安装rsync软件,然后在客户端,也就是218上面安装inotify软件
在172.16.1.218主机上:
[iyunv@218 rsyncd]# ls
rsyncd.secrets rsyncd.secretsbak
[iyunv@218 rsyncd]# pwd
/etc/rsyncd
[iyunv@218 rsyncd]# vim rsyncd.secrets
12345678
[iyunv@218 rsyncd]#chmod 600 /etc/rsyncd/rsyncd.secrets
安装inotify软件,安装在configure及编译路径指向/usr/local/inotify下面
源码安装编译,直到OK
OK之后,inotify文件夹下会有四个目录,如下:
[iyunv@218 inotify]# ls
bin include lib logs
bin目录下有两个命令:
[iyunv@218 bin]# ls
inotifywait inotifywatch
安装已经OK了,下面需要编写同步脚本,脚本如下:
[iyunv@218 local]# vim inotify_rsync.sh
#!/bin/sh
#date:2013-1-11
#function:rysnc 172.16.1.218 to 172.16.1.220
if [ ! -f /etc/rsyncd/rsyncd.secrets ];then
echo "12345678">/etc/rsyncd/rsyncd.secrets
/bin/chmod 600 /etc/1.pas
fi
log=/usr/local/inotify/logs/rsync.log
src="/usr/local/218backup/"
host="172.16.1.220"
module="220backup"
/usr/local/inotify/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $src | while read DATE TIME DIR FILE; do
FILECHANGE=${DIR}${FILE}
/usr/bin/rsync -avH --delete --progress --password-file=/etc/rsyncd/rsyncd.secrets $src --exclude-from="/usr/local/inotify/logs/rules.txt" rsync@$host::$module &
echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log
done