rsync+inotify搭建实时同步系统

rsync是linux、UNIX系统下的文件同步数据传输工具,他采用rsync算法使一个客户机和远程文件服务器之间的文件同步。通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;rsync可以在中断之后恢复复制,rsync只传输源文件和目标文件不一致的部分,rsync可以执行完整备份或增量备份
rsync官网:http://rsync.samba.org
Inotify
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13版本起,加入了对inotify的支持。通过inotify可以监控文件系统中添加、删除、修改、移动等各种细微事件,利用这个内核接口,第三方软件可以监控文件系统下文件的各种变化情况,inotify-tools就是这样的一个第三方软件。
系统环境
系统:Centos 5.4
A:192.168.92.128  server
B:192.168.92.131  client
client 向 server 传输数据
配置clientA
默认系统安装有rsync
# mkdir -p /etc/rsyncd  创建主目录
# touch /etc/rsyncd/rsyncd.conf 创建rsync主配置文件
# touch /etc/rsyncd/rsyncd.secrets  创建密码文件
# chmod 600 /etc/rsyncd/rsyncd.secrets  修改文件属性为600
# vi /etc/rsyncd/rsyncd.secrets  创建用户名和密码(xiaolu:1234567)
# touch /etc/rsyncd/rsyncd.motd  创建说明文档
# vi /etc/rsyncd/rsyncd.conf  修改主配置文件
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.92.128
uid =root
gid = root
use chroot = yes
read only = no
hosts allow = *
write only = no
strict modes = yes
motd file = /etc/rsyncd/rsyncd.motd
timeout = 300
transfer logging = yes
log file = /var/log/rsync.log
[ webqq ]
       path = /qq
       list = false
       ignore errors
       auth users = xiaolu
       secrets file = /etc/rsyncd/rsyncd.secrets
       exclude = error_log httpd.pid
# /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf   启动守护进程
# echo "/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf" >>/etc/rc.local   将启动进程加入到开机自动启动中
配置inotify段  serverB
安装inotify需要linux内核的支持,再安装inotify-tools前需确认linux系统内核是否是2.6.13以上的版本。
[root@Rytong ~]# uname -r
2.6.18-164.el5
安装inotify-tools-3.14.tar.gz
# tar -zxvf inotify-tools-3.14.tar.gz  解压
# ./configure  
# make
# make install
查看是否有安装
# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 47104 07-31 13:45 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 43418 07-31 13:45 /usr/local/bin/inotifywatch
配置rsync客户端
# mkdir -p /etc/rsyncd
# touch /etc/rsyncd/rsyncd.password
# echo "1234567" > /etc/rsyncd/rsyncd.password
# chmod 600 /etc/rsyncd/rsyncd.password
# touch /etc/rsyncd/rsync.log
# mkdir /qt  脚本中有定义
创建脚本
# vi /inotify.sh
#!/bin/bash
host=192.168.92.128
src=/qt/
dst=webqq
user=xiaolu
/usr/local/bin/inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files
       do
               /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd/rsyncd.password $src $user@$host::$dst
       echo "${files} was rsyncd" >>/etc/rsyncd/rsync.log 2>&1
done
# chmod 755 inotify.sh  设置脚本权限
# /inotify.sh & 运行脚本 至后台
# echo "/inotify.sh & " >> /etc/rc.local  加入开机自动启动
小连接:
Inagios_强势来袭_IT运维人人必备
官方网站:www.inagios.org
望大家多多支持
inagios介绍: http://haolulu.blog.51cto.com/3164472/920969