网络环境
客户端 192.168.1.10 所有机器都与这台机器进行数据交互同步,保持与这台机器一模一样的数据
服务器A 192.168.2.10
服务器B 192.168.2.11
首先在服务器上安装软件并配置
- 服务器A
yum install -y rsync
- 配置rsync
vim /etc/rsyncd.conf
[web] (连接名称)
path = /www/wwwroot/ (同步目录,目录下的所有文件和目录)
ignore errors = yes
read only = false
write only = false
hosts allow = 192.168.1.10 (这里指定允许客户端ip访问,允许所有为 *)
hosts deny = *
list = false
uid = www
gid = www
use chroot = yes
auth users = sync (设定授权用户,虚拟的 非系统内的用户)
secrets file = /etc/rsyncd.passwd (这里是配置密码文件)
- 配置密码
echo "sync:sync112233" >/etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd
rsync --daemon
rsync --daemon #启动并重新加载配置文件
rsyncd.passwd 权限必须是600
服务器B同上配置,一模一样
- 客户端 安装软件
yum install -y rsync inotify-tools
- 配置密码
echo "sync112233" > /etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd
- 验证同步
在/www/wwwroot/目录下创建一个文件a.txt
rsync -azvH --delete --password-file=/etc/rsyncd.passwd --exclude='.user.ini' /www/wwwroot/ rsync://sync@192.168.2.10/web
rsync -azvH --delete --password-file=/etc/rsyncd.passwd --exclude='.user.ini' /www/wwwroot/ rsync://sync@192.168.2.11/web
执行完命令查看服务器A,服务器B web配置下path指定的目录,我这里是/www/wwwroot/,这个目录下增加了 a.txt 表示配置完成
- 创建文件监控脚本
vim /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /www/wwwroot/ "
RSYNC1="rsync -azH --delete --password-file=/etc/rsyncd.passwd --exclude='.user.ini' /www/wwwroot/ rsync://sync@192.168.2.10/web"
RSYNC2="rsync -azH --delete --password-file=/etc/rsyncd.passwd --exclude='.user.ini' /www/wwwroot/ rsync://sync@192.168.2.11/web"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC1
$RSYNC2
pwd
fi
done
这个脚本要持久化运行,小编推荐 Supervisor进程管理
评论区