宝塔面板需借助第三方工具实现网站文件多服务器实时同步:一、rsync+inotifywait触发式同步;二、lsyncd守护式同步;三、WebDAV挂载配合unison双向同步。

如果您的网站文件需要在多个服务器之间保持实时一致,宝塔面板本身不内置原生的实时镜像热备功能,但可通过组合系统级工具与面板配置实现。以下是几种可行的技术路径:
一、使用rsync + inotifywait 实现触发式同步
该方法利用 inotifywait 监控源服务器网站目录的文件变化事件,一旦检测到新增、修改或删除操作,立即调用 rsync 将变更同步至目标服务器,延迟通常控制在秒级。
1、在源服务器安装 inotify-tools 和 rsync:执行 yum install -y inotify-tools rsync(CentOS)或 apt install -y inotify-tools rsync(Ubuntu/Debian)。
2、在目标服务器创建专用同步用户并配置 SSH 免密登录:生成密钥对后,将公钥追加至目标服务器的 /www/wwwroot/backup_user/.ssh/authorized_keys 中。
3、编写监控脚本,例如保存为 /www/scripts/mirror_sync.sh,内容包含 inotifywait 循环监听和 rsync 增量推送命令,其中 rsync 参数需包含 --delete --exclude='.user.ini' --exclude='*.log' 以排除敏感与日志文件。
4、赋予脚本执行权限并设置开机自启:运行 chmod +x /www/scripts/mirror_sync.sh,并将启动命令写入 /etc/rc.d/rc.local。
二、部署lsyncd服务进行守护式同步
lsyncd 是基于 inotify 的轻量级实时同步守护进程,支持多目标、过滤规则和失败重试机制,比手动脚本更稳定可靠,适合生产环境长期运行。
1、通过宝塔终端安装 lsyncd:执行 wget https://github.com/axkibe/lsyncd/releases/download/latest-2.2.x/lsyncd-2.2.3-1.el7.x86_64.rpm && rpm -ivh lsyncd-2.2.3-1.el7.x86_64.rpm(以 CentOS 7 为例)。
2、创建配置文件 /etc/lsyncd.conf,定义 source = "/www/wwwroot/your_site",target = "backup_user@192.168.1.100:/www/wwwroot/your_site_bak",并启用 rsyncSSH 模式与 delay = 1 参数降低频繁触发开销。
3、启用并启动服务:执行 systemctl enable lsyncd && systemctl start lsyncd。
4、验证同步状态:修改源站一个测试文件,检查目标服务器对应路径是否在 1–3 秒内完成更新,并查看 journalctl -u lsyncd -f 日志确认无 error 报错。
三、借助WebDAV挂载实现双向文件感知
此方式将目标服务器网站目录以 WebDAV 方式暴露,源服务器通过 davfs2 挂载为本地路径,再结合宝塔计划任务定期比对 md5sum 或使用 unison 工具做双向差异同步,适用于网络策略限制 SSH 但允许 HTTP(S) 的场景。
1、在目标服务器启用 Apache/Nginx 的 WebDAV 模块,并配置认证目录,确保返回状态码为 200 OK 且支持 PROPFIND 方法。
2、在源服务器安装 davfs2:执行 yum install -y davfs2,编辑 /etc/davfs2/secrets 添加账号密码,格式为 https://backup.example.com/webdav your_user your_pass。
3、创建挂载点并测试挂载:运行 mkdir -p /mnt/webdav_bak && mount -t davfs https://backup.example.com/webdav /mnt/webdav_bak,确认可读写。
4、配置宝塔计划任务,每 30 秒执行一次 unison 命令:例如 unison /www/wwwroot/your_site /mnt/webdav_bak -auto -batch -repeat=watch -ignore='Name {.user.ini}'。










