记录下使用rsync同步网站数据实现异地备份,这样万一服务器挂了的话马上恢复访问也更快。
网站放置在服务器A,备份服务器为B,两台服务器均为Debian12系统,本文主要记录网站文件自动同步,不包含数据库。
1.在A/B服务器都安装Lsyncd
sudo apt update sudo apt install lsyncd rsync
2. 配置 SSH 密钥认证(免密同步)
# 在服务器 A 执行 ssh-keygen -t rsa # 一直按回车使用默认路径 #或者ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa ssh-copy-id -i ~/.ssh/id_rsa.pub –p 端口 root@B的IP # 输入B的密码
完成后试下能不能连接到B服务器
ssh -p 端口 root@B的IP
3.安装inotify-tools(在A服务器)
sudo apt update && sudo apt install inotify-tools –y
4.创建同步脚本:假设/root/sync_files.sh
#!/bin/bash SOURCE_DIR="/home/wwwroot/A.com" # A 服务器网站目录 DEST_HOST="1.1.1.1" # B 服务器 IP DEST_DIR="/home/wwwroot/A.com" # B 服务器目标目录 SSH_PORT="1234" # B 服务器 SSH 端口 # 实时监控并同步 inotifywait -mrq --format '%w%f' -e create,modify,delete,move "$SOURCE_DIR" | while read file do # 同步变化的文件(需确保路径正确) rsync -avz -e "ssh -p $SSH_PORT" --delete "$SOURCE_DIR/" root@$DEST_HOST:$DEST_DIR echo "$(date): Synced $file" >> /root/sync.log # 可选:记录日志 done
注:以上在AB服务器/home/wwwroot都有相同目录,如果B没有先创建并设定权限
5.赋予脚本执行权限并后台运行
chmod +x /root/sync_files.sh nohup /root/sync_files.sh > /dev/null 2>&1 &
如果发现没同步,可以修改脚本输出到日志文件,临时调试和查看日志
nohup /root/sync_files.sh > /root/sync.log 2>&1 & cat /root/sync.log
也可以手动测试下rsync命令是否正常执行
rsync -avz -e "ssh -p 端口" --delete /home/wwwroot/A.com root@B的IP:/home/wwwroot/A.com










![[黑五]HostDare低至3.5折+双倍内存+双倍流量,洛杉矶VPS年付9.1美元起,可选AMD EPYC,可选CN2 GIA+AS9929+CMIN2线路-赵容部落](https://www.zrblog.net/wp-content/uploads/2016/06/hostdare.png)

![[11.11]搬瓦工全场8.9折优惠码,可选香港/日本/美国/加拿大/荷兰/阿联酋等多机房,大带宽CN2 GIA线路-赵容部落](https://www.zrblog.net/wp-content/uploads/2013/11/bandwagonhost.jpg)