lsyncd + rsync 双向实时同步部署(centos stream 9)
环境说明
源服务器A:**192.168.1.149**(CentOS Stream 9)
目标服务器B:**192.168.1.148**(CentOS Stream 9)
同步目录:**/data/web/**
效果:**双向实时同步**(一边改,另一边自动同步)
一、两台机器都执行:基础准备
1. 安装 EPEL(lsyncd 必须)
dnf install -y epel-release dnf makecache2. 安装 rsync + lsyncd
dnf install -y rsync lsyncd3. 创建同步目录
mkdir -p /data/web4. 关闭防火墙(企业内网推荐)
systemctl stop firewalld systemctl disable firewalld5. 关闭 SELinux(避免权限拦截)
setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config6. 创建 lsyncd 日志目录
mkdir -p /var/log/lsyncd二、两台机器互相配置免密 SSH(必须)
在 149 执行:
ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519 ssh-copy-id root@192.168.1.148在 148 执行:
ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519 ssh-copy-id root@192.168.1.149双向验证(两台都试一下)
ssh root@192.168.1.148 date ssh root@192.168.1.149 date不输入密码直接登录,即为成功。
三、配置 lsyncd(两台机器配置不同)
机器 A:192.168.1.149
编辑:
vim /etc/lsyncd.conf写入完整配置(直接复制,无任何坑):
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", pidfile = "/var/run/lsyncd.pid", nodaemon = false, maxProcesses = 5 } sync { default.rsync, source = "/data/web/", target = "192.168.1.148:/data/web/", delay = 1, rsync = { archive = true, compress = true, verbose = true } }机器 B:192.168.1.148
编辑:
vim /etc/lsyncd.conf写入:
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", pidfile = "/var/run/lsyncd.pid", nodaemon = false, maxProcesses = 5 } sync { default.rsync, source = "/data/web/", target = "192.168.1.149:/data/web/", delay = 1, rsync = { archive = true, compress = true, verbose = true } }四、两台机器都启动 lsyncd
systemctl enable --now lsyncd systemctl restart lsyncd systemctl status lsyncd出现 **active (running)** 即为成功。
五、测试双向实时同步
在 149 上创建文件
touch /data/web/test_from_149.txt echo "test" > /data/web/test_from_149.txt去 148 查看
ls /data/web/ cat /data/web/test_from_149.txt在 148 上创建文件
touch /data/web/test_from_148.txt去 149 查看
ls /data/web/两边都能实时出现,**双向同步成功**。
六、如需开启"删除同步"(源删目标也删)
将配置中的
delete = false改为
delete = true然后重启:
systemctl restart lsyncd
七、查看日志(排错用)
tail -f /var/log/lsyncd/lsyncd.log