🟢 第一阶段:备用机初始化【备用机】
安装 Rsync 和基础工具 (补全缺失)
apt-get update
apt-get install -y rsync curl unzip开启 SSH 通道 (让主力机能连进来) 创建并运行授权脚本
nano secure_backup.sh(粘贴以下内容)
#!/bin/bash
if [ "$EUID" -ne 0 ]; then echo "请用 Root 运行"; exit 1; fi
echo "1. 设置临时 Root 密码 (用于首次连接)..."
passwd root
echo "2. 临时允许密码登录..."
sed -i '/^PermitRootLogin/d' /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
systemctl restart ssh
echo "⏸️ 备用机准备就绪!请现在去【主力机】执行连接操作..."
read -p "✅ 密钥传输完成后,按回车键关闭密码登录..."
echo "3. 锁定 SSH (仅允许密钥安全登录)..."
sed -i '/^PermitRootLogin/d' /etc/ssh/sshd_config
echo "PermitRootLogin prohibit-password" >> /etc/ssh/sshd_config
systemctl restart ssh
echo "🎉 安全配置完成!"安装 Rsy运行: (脚本暂停等待时,切换到主力机)nc (补全缺失)
chmod +x secure_backup.sh && ./secure_backup.sh🔵 第二阶段:主力机环境准备与授权 (在 Master 操作)【主力机】
apt-get update
apt-get install -y rsync生成 SSH 密钥 (如果以前没生成过)
# 一路回车即可
[ ! -f ~/.ssh/id_rsa ] && ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa发送密钥给备用机
# 输入刚才在备用机设置的临时密码
ssh-copy-id root@192.168.1.97
测试连接 (至关重要)
ssh root@192.168.1.97
# ✅ 必须确认无需密码直接进入
# 测试完输入 exit 退出,回到主力机🔵 第三阶段:执行数据同步 (在 Master 操作)【主力机】
创建同步脚本
nano /root/sync_to_backup.sh(粘贴以下内容)
#!/bin/bash
BACKUP_IP="192.168.1.97"
SOURCE_DIR="/data/docker_sites/"
TARGET_DIR="/data/docker_sites/"
echo "🚀 开始同步..."
# 排除列表:不覆盖备用机的身份文件、脚本和 Git 目录
rsync -avzP --delete \
--exclude 'frpc/frpc.toml' \
--exclude 'frpc/docker-compose.yml' \
--exclude 'manage.sh' \
--exclude 'setup_ultimate.sh' \
--exclude 'secure_backup.sh' \
--exclude 'scripts/' \
"$SOURCE_DIR" "root@$BACKUP_IP:$TARGET_DIR"
echo "✅ 同步完成!"执行同步
chmod +x /root/sync_to_backup.sh
./sync_to_backup.sh第四阶段:备用机一键上线【备用机】
目标:启动容器,修复网络,强制重载,并锁定开机自启。
在Docker 运营旗舰版 V15.8选项12.备机上线(一键)执行
目的是为了让备用机和主力机保持“完全一致”。
但这个“覆盖”是有讲究的。你的同步脚本中使用的是 rsync 命令配合 --delete 参数,这意味着这是一种 “镜像同步” (Mirroring)。
具体发生了什么?我们分 4 种情况来解析:
1. 📂 没有任何变化的文件
- 动作:跳过 (Skip)。
- 解释:Rsync 非常聪明,它会对比文件的大小和修改时间。如果主力机的文件没变,备用机也有一模一样的,它就什么都不做。
- 好处:速度非常快,只传输变动的部分。
2. 📝 主力机修改了文件 (比如文章有了新评论)
- 动作:覆盖 (Overwrite)。
- 解释:主力机的文件比备用机的新,Rsync 会把主力机的新版本推过去,覆盖掉备用机的旧版本。
- 结果:备用机的数据更新为最新状态。
3. ➕ 主力机新增了文件 (比如上传了新图片)
- 动作:新增 (Add)。
- 解释:备用机没有这个文件,Rsync 会把它复制过去。
4. ❌ 主力机删除了文件 (最危险的一点!)
- 动作:删除 (Delete)。
- 解释:因为你的脚本里加了
--delete参数。如果主力机删了一张图,为了保持“完全一致”,备用机上的这张图也会被强制删除。 - 警告:如果你在主力机误删了数据,然后执行了同步,备用机的数据也会丢!
🛡️ 唯一的例外:我们设置了“保护罩”
还记得脚本里的 --exclude 吗?
Bash
--exclude 'frpc/frpc.toml' \
--exclude 'manage.sh' \
...
这些被排除的文件,无论你怎么同步,由于它们在“保护名单”里,备用机上的这些文件永远不会被覆盖、删除或修改。 这就是为什么你的备用机可以一直保持 -backup 的身份,而不会变成主力机的名字。
💡 总结
第二次、第三次执行备份时:
- 它是“更新”操作:只传输你改动过的部分,速度很快。
- 它是“镜像”操作:主力机有什么,备用机就是什么。主力机丢了什么,备用机也跟着丢什么。
建议: 如果你担心在主力机误删文件导致备用机也丢文件,可以把脚本里的 --delete 去掉。
- 去掉后:主力机删除文件,备用机不会删除(会保留垃圾文件)。
- 保留时:主力机和备用机时刻保持 1:1 精确一致(推荐用于热备系统)。
原创文章,作者:开心电脑网,如若转载,请注明出处。