注:本篇介绍的是单向同步,即A文件同步到B,但B的文件不同步到A,双向同步的在下一篇文章中。
rsync与inotify不再赘述,直接进入实战。
0、背景
两台服务器IP地址分别为:
源服务器:192.168.43.159
目标服务器:192.168.43.231
同步方向:从源服务器(192.168.43.159)的/root/test目录下的所有对文件的增删改实时同步到目标服务器(192.168.43.231)的/root/www_bak/目录下,但反向不同步。
源服务器下需要安装rsync和inotify,目标服务器仅需安装rsync,源服务器做为server端,实时的向目标服务器client端发送数据
一、源服务器配置
1、
先查看本机是否已安装rsync
查看命令rpm -qa |grep rsync
下载好安装包后进入到安装包并增加安装后缀,安装到/usr/local/rsync路径下
[root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@nginx rsync-3.0.9]# make
[root@nginx rsync-3.0.9]# make install
注:安装路径非常重要,后续要启动rsync服务必须使用该目录下的文件
2、设置密码文件
[root@nginx rsync-3.0.]# cd /usr/local/rsync/
[root@nginx rsync]# echo "rsyncpwd" >/usr/local/rsync/rsync1.passwd
当然你也可以手动 通过 vim 编辑该文件,指定密码为rsyncpwd
给与权限600,不然会报错
[root@nginx rsync]# chmod rsync1.passwd
3、安装inotify
先查看服务器是否支持inotify
ll /proc/sys/fs/inotify
如果有以下3个文件,那么即支持安装inotify
#安装inotify
cd /usr/src/
wget http://cloud.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 ##该安装位置非常重要,因为安装完inotify文件后需要调用路径下的inotifywait文件
make make make install
4、创建监控与同步脚本
其功能就是:从源服务器(192.168.43.159)的/root/test目录下所有的文件无论是添加、修改、删除文件,能够通过inotify监控到,并通过rsync实时同步到目标服务器(192.168.43.231)的/root/www_bak/目录下。
该脚本要放置在被监控的路径下,如本次被同步路径为/root/test/
vim /root/test/rsync1.sh
#!/bin/bash
host=192.168.43.231
src=/root/test/
des=web
user=webuser
/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/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync1.passwd $src $user@$host::$des
echo "${files} was rsynced" >>/tmp/rsync.log >&
done
host:目标服务器IP; src:被同步的本地路径; des:同步模块名,目标服务器必须一致 ;user:认证用户名,目标服务器的密码文件必须是这个
注意点:其中的/usr/local/inotify/bin/inotifywait 路径在上述inotify安装路径下找到;/usr/local/rsync/rsync1.passwd路径在上述的密码文件路径下找到。
修改权限,给与764权限
[root@nginx tmp]# chmod rsync1.sh
二、目标服务器安装配置
1、目标服务器也需要安装rsync,和源服务器一样。
2、建立密码文件:
[root@nginx rsync-3.0.]# cd /usr/local/rsync/
[root@nginx rsync]# echo "webuser:rsyncpwd" >/usr/local/rsync/rsync2.passwd
同样要给此文件一个600的权限
chmod 600 /etc/rsync2.passwd
注:在源服务器建立的密码文件,只有密码,没有用户名;而在目标服务器里建立的密码文件,用户名与密码都有。
3、编辑rsync监控文件
本次监控文件放置在rsync的安装路径下/usr/local/rsync
vim /usr/local/rsync/rsync2.conf
uid = root
gid = root
use chroot = no
max connections =
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web]
path = /root/www_bak/
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.43.159
hosts deny = *
list = false
uid = root
gid = root
auth users = webuser
secrets file = /usr/local/rsync/rsync2.passwd
三、启动服务
a、源服务器启动监控与同步:
sh /root/test/rsync1.sh &
b、目标服务器启动 rsync监控
/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync2.conf
四、测试同步