服务器间文件实时双向同步(rsync+inotify)

1.下载rsync+inotify

https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz

http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz --no-check-certificate

 

2.复制程序包到linux服务器中 然后安装rsync

cd /usr/local

tar -zxvf rsync-3.1.2.tar.gz

cd rsync-3.1.2

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

make & make install

 

3.配置rsync

vi /usr/local/rsync/rsyncd.conf

 

uid = root
gid = root
use chroot = 0
port = 873
#允许ip访问设置,请根据实际需要进行配置,这里为了方便设为全网段 *
# hosts allow = 192.168.0.1/255.255.255.0 198.162.145.1 10.0.1.0/255.255.255.0
hosts allow = *
max connections = 0
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
syslog facility = local3
#方括号中为模块声明,对应命名,这里master_web对应了主web机配置
[master_web]
#指定当前模块在rsync服务器上的同步路径,该参数是必须指定的
path = /home/test-file
#注释,可以同模块名一样,从服务器可都为slave_web
comment = master_web
ignore errors
#是否允许客户端上传文件
read only = no
list = no
#指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
auth users = root
#保存密码和用户名文件,需要自己生成
secrets file = /usr/local/rsync/rsyncd.passwd

 

创建用户名 密码文件

vi /usr/local/rsync/rsyncd.passwd

文件内容:root:密码

vi /root/rsyncd.passwd

文件内容:密码

 

赋予600权限

chmod 600 /usr/local/rsync/rsyncd.passwd

chmod 600 /root/rsyncd.passwd

 

4.以守护进程方式启动rsync服务

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf

 

添加开启自启动

echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf">>/etc/rc.local

 

两台服务器都需要安装 rsync 都安装好后 测试rsync是否正常运行

rsync -vzrtopg --delete --progress /home/test-file/ root@192.168.51.117::master_web --password-file=/root/rsyncd.passwd

没有出现报错(部署成功)

node115:/usr/local/rsync # rsync -vzrtopg --delete --progress /home/test-file/ root@192.168.51.117::master_web --password-file=/root/rsyncd.passwd
sending incremental file list
./
11
              0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=1/3)
22
              0 100%    0.00kB/s    0:00:00 (xfr#2, to-chk=0/3)

sent 163 bytes  received 65 bytes  456.00 bytes/sec
total size is 0  speedup is 0.00

 

5.安装inotify

 

tar -zxvf inotify-tools-3.14.tar.gz

makedir /usr/local/inotify

cd inotify-tools-3.14

./configure --prefix=/usr/local/inotify

make && make install

 

查看是否安装成功

ls -alh /usr/local/inotify/bin/inotify*

 

建立软连接

ln -s /usr/local/inotify/bin/inotifywait /usr/bin/inotifywait

ln -s /usr/local/inotify/bin/inotifywatch /usr/bin/inotifywatch

 

6.创建并配置inotify_back.sh 脚本

vi /usr/local/inotify/inotify_back.sh

 

脚本内容:

#!/bin/bash
src=/home/test-file/
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file
do
rsync -vzrtopg --delete --progress /home/test-file/ root@192.168.51.117::master_web --password-file=/root/rsyncd.passwd
echo "${file} was rsynced" >> /tmp/rsync.log 2>&1
done

另外一台服务器 更改ip即可

 

赋予可执行权限

chmod +x /usr/local/inotify/inotify_back.sh

 

运行inotify_back.sh同步监控脚本和配置守护进程

 nohup /usr/local/inotify/inotify_back.sh &>/dev/null &

echo "nohup /usr/local/inotify/inotify_back.sh &>/dev/null &" >> /etc/rc.local

 

备注:注意端口是否开放 用户是否配置

rsync可能遇到的问题整理:https://blog.csdn.net/weixin_36131079/article/details/116599565

 

posted @ 2022-06-11 10:44  官萧何  阅读(599)  评论(0编辑  收藏  举报