1Panel 社区版:多服务器自动化镜像备份全攻略
背景与挑战
1Panel 社区版不包含“文件自动同步”功能。对于运维人员来说,手动转移备份不仅低效,且极易导致两台服务器的硬盘空间因旧备份堆积而紧张。
解决方案: 利用 Linux 原生的 rsync 工具,配合 SSH 免密登录与 1Panel 计划任务,实现“增量镜像同步”。
一、 环境准备:安装必备工具
在进行任何操作前,必须确保 1Panel 服务器 以及 所有备份目标服务器 都安装了 rsync。
-
Ubuntu / Debian:
Bashapt update && apt install -y rsync -
CentOS / AlmaLinux:
Bashyum install -y rsync
二、 配置 SSH 免密登录
为了让脚本在后台全自动运行,1Panel 服务器必须拥有登录目标服务器的“通行证”。
-
在 1Panel 服务器生成密钥对:
Bashssh-keygen -t rsa -b 4096 # 一路回车即可 -
将公钥分发至各备份服务器:
Bashssh-copy-id -p <服务器A端口> root@<服务器A_IP> ssh-copy-id -p <服务器B端口> root@<服务器B_IP>验证:尝试
ssh root@IP,若无需密码直接登录,则配置成功。
三、 自动化镜像备份脚本
创建脚本 /opt/scripts/double_sync.sh。该脚本使用了 --delete 参数,它会确保远程服务器的文件列表与本地完全一致(本地删,远程也删),从而完美解决空间堆积问题。
Bash
#!/bin/bash
# ================= 配置信息 =================
# 1Panel 默认本地备份存放路径
SOURCE_DIR="/opt/1panel/backup/"
# 备份服务器 A 配置
REMOTE_A_USER="root"
REMOTE_A_HOST="1.1.1.1"
REMOTE_A_PORT="22"
REMOTE_A_DIR="/path/to/backup_a/"
# 备份服务器 B 配置
REMOTE_B_USER="root"
REMOTE_B_HOST="2.2.2.2"
REMOTE_B_PORT="22"
REMOTE_B_DIR="/path/to/backup_b/"
# 日志路径
LOG_FILE="/var/log/1panel_rsync.log"
# ================= 执行同步 =================
echo "---------------------------------------" >> $LOG_FILE
echo "任务启动: $(date)" >> $LOG_FILE
# 同步至服务器 A (--delete 实现镜像模式)
echo "正在镜像同步至服务器 A..." >> $LOG_FILE
rsync -avz --delete -e "ssh -p ${REMOTE_A_PORT}" \
${SOURCE_DIR} ${REMOTE_A_USER}@${REMOTE_A_HOST}:${REMOTE_A_DIR} >> $LOG_FILE 2>&1
# 同步至服务器 B
echo "正在镜像同步至服务器 B..." >> $LOG_FILE
rsync -avz --delete -e "ssh -p ${REMOTE_B_PORT}" \
${SOURCE_DIR} ${REMOTE_B_USER}@${REMOTE_B_HOST}:${REMOTE_B_DIR} >> $LOG_FILE 2>&1
echo "任务完成: $(date)" >> $LOG_FILE
赋予执行权限:
Bash
chmod +x /opt/scripts/double_sync.sh
四、 在 1Panel 中部署计划任务
- 登录 1Panel,进入 计划任务。
- 创建任务:
-
任务类型:Shell 脚本。
-
执行周期:建议设在 1Panel 本地备份任务完成后的 30 分钟(例如每天 03:00)。
-
脚本内容:
Bash/bin/bash /opt/scripts/double_sync.sh
-
五、 核心逻辑与空间管理建议
1. 为什么选择 rsync --delete?
- 增量传输:只上传变化的文件,极省带宽。
- 空间自平衡:当 1Panel 根据“保留份数”删除了本地旧备份,远程 VPS 会在下次同步时自动将其剔除。
2. 存储策略优化表
| 维度 | 建议配置 | 目的 |
|---|---|---|
| 1Panel 本地保留份数 | 5 - 10 份 | 兼顾本地回滚需求与硬盘压力 |
| 远程服务器保留份数 | 与本地同步 | 保持异地有最新的多版本镜像 |
| 数据库备份频率 | 每天 | 数据安全性要求最高 |
| 网站程序备份频率 | 每周 | 程序改动频率通常较低 |
3. 注意事项
- 风险预警:由于使用了
--delete,如果 1Panel 本地备份因意外被清空,远程备份也会在下次任务时被清空。建议配合 云端对象存储(如 Rclone + S3) 做最后的“冷备份”。 - 日志监控:定期检查
/var/log/1panel_rsync.log,确保没有因网络抖动导致的传输失败。
文章作者:Kaelen
文章链接:https://kaelen.top/archives/wei-ming-ming-wen-zhang-c3dP35jM
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论