Centos7 rsync+inotify两台服务器同步文件(单向)

时间:2023-03-08 15:51:58

注:本篇介绍的是单向同步,即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

Centos7 rsync+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

四、测试同步