您的位置:首页 > 其它

rsync+inotify 实现服务器之间目录文件实时同步

2013-08-04 09:20 381 查看

web主:192.168.1.139

web备:192.168.1.138

一、安装web主:

1.安装rsync

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9

./configure --prefix=/usr/local/rsync
make 
make install

2.安装完毕后建立认证密码文件:

echo "123456">/usr/local/rsync/rsync.passwd
其中“123456”是我们设置的密码

为了安全起见我们把密码文件的权限设置成 600:
chmod 600 /usr/local/rsync/rsync.passwd

3.安装 inotify
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify

make && make install

4.创建 rsync 复制脚本
脚本的主要作用是是将 server 端的目录/tmp 里的内容,如果修改了(无论是添加、修改、删除文件)能
够通过 inotify 监控到,并通过 rsync 实时的同步给 client 的/tmp 里,下面是通过 shell 脚本实现的

#!/bin/bash
host=192.168.1.138
src=/web/wwwroot/
des=apabi
user=apabiuser
/usr/local/inotify/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/local/rsync/bin/rsync  -vzrtopg  --delete  --progress  --password-file=/usr/local/rsync/rsync.passwd  $src $user@$host::$des
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
done

并给予 764 权限
chmod 764 rsync.sh 
切记等客户端安装完毕后再运行这个脚本,否侧会报错
sh /web/wwwroot/rsync.sh & 

5.我们还可以把 rsync.sh 脚本加入到开机启动项里
[root@nginx tmp]# echo "/web/wwwroot/rsync.sh" >> /etc/rc.local 

 

6.安装客户端配置:
安装 rsync
tar zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9
./configure --prefix=/usr/local/rsync
make 
make install
7.创建密码文件,注意里面的信息要和主服务器一致 

cd /usr/local/rsync
echo "apabiuser:123456" >rsync.passwd

8.给密码文件设置 600 权限,否则启动服务会报错
chmod 600 rsync.passwd 
9.创建 rsync 配置文件

vim rsync.conf

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[apabi]
path = /web/wwwroot/
comment = apabi file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.139
hosts deny = *
list = false
uid = root
gid = root
auth users = apabiuser
secrets file = /usr/local/rsync/rsync.passwd

其中 apabi 是 server 服务端里的认证模块名称,需要与主服务器里的一致 
把配置文件命名为 rsync.conf,放到/usr/local/rsync/目录里
10.启动 rsync 服务

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf 
11.把 rsync 服务加入开机启动项
echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf" >> /etc/rc.local

12.在服务端 /web/wwwroot/ 下的文件:

#pwd

#ls

13.在客户端 /web/wwwroot 下的文件:

#pwd

#ls

我们在服务端创建一个测试文件 apabi20130803 看能不能自动同步到客户端

#echo "apabi test" > apabi20130803

我们在客户端查看可以看到apabi20130803文件,就说明成功了

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: