全自动备份方案
我们之前的步骤只是完成了“搭建”,现在要来补上“维护”这块拼图。
“方便移植”和“定时备份”的核心逻辑是:
Dockge 的所有数据(包括它自己和它管理的容器配置)都存在 /opt/stacks 和 /opt/dockge/data 这两个文件夹里。
只要我们定期把这两个文件夹打包,上传到云盘(比如 Google Drive 或 阿里云盘),哪怕 VPS 爆炸了,你在新 VPS 上把文件拉回来,一行命令就能原地复活。
下面是最简单的全自动备份方案。
全自动备份系统架构图 (Daily Automation):
灾难恢复流程图 (Disaster Recovery):
第一步:安装备份工具 (Rclone)
Rclone 是 Linux 下的神器,能把你的 VPS 文件夹同步到几乎所有云盘。
在 Dockge 中部署 Rclone
- 打开 Dockge 面板。
- 点击 + Compose。
- Name:
rclone-backup。 - 配置: (注意:我们需要把备份目录和 Rclone 的配置目录挂载出来)
version: '3.8'
services:
rclone:
image: rclone/rclone:latest
container_name: rclone
restart: unless-stopped
volumes:
- /opt/docker_data/rclone/config:/config/rclone # Rclone 配置文件持久化
- /opt/backup:/data/backup # 挂载备份目录,方便读取打包好的文件
environment:
- PHP_TZ=Asia/Shanghai
- PUID=0
- PGID=0
# 关键:让它作为一个后台服务运行,或者是定时任务模式
# 这里我们用最简单的:启动一个带 Web UI 的模式,方便配置
command: rcd --rc-web-gui --rc-addr :5572 --rc-user admin --rc-pass admin
ports:
- 5572:5572
-
点击 Deploy。
第二步:配置 Rclone 连接 (对接家庭 Alist)
通过命令行交互方式配置,连接更稳定。
-
进入容器配置向导: 在 VPS 终端执行:
docker exec -it rclone rclone config -
交互配置步骤:
-
n (New remote) -> 回车。
-
name: 输入
home_alist-> 回车。 -
Storage: 输入
webdav(或者找到 WebDAV 对应的数字) -> 回车。 -
url: 输入
http://10.10.10.2:5244/dav- (关键:这里走的是 EasyTier 内网 IP,速度快且安全)
-
vendor: 选择
other-> 回车。 -
user: 输入 Alist 用户名 -> 回车。
-
password: 输入 y -> 输入 Alist 密码 (输入时不可见) -> 再次输入确认。
-
bearer_token: 直接回车跳过。
-
Edit advanced config: n -> 回车。
-
Keep this remote: y -> 回车。
-
q -> 回车退出。
-
-
验证连接:
docker exec rclone rclone lsd home_alist:/(如果列出了家里的盘符如 C: D:,说明连接成功)
第三步:编写全自动备份脚本
打包数据 -> 同步到家里 -> 清理旧数据。
-
创建脚本:
nano /opt/backup_docker.sh -
写入内容:
#!/bin/bash
# ================= 配置区域 =================
BACKUP_DIR="/opt/backup"
DATE=$(date +%Y%m%d)
FILENAME="docker_backup_$DATE.tar.gz"
RCLONE_REMOTE="home_alist"
# 远程存放路径 (存到家里电脑 D 盘下的 vps_backup 目录)
# Alist 挂载的本地硬盘通常需要带盘符
REMOTE_DIR="/D:/vps_backup"
# ===========================================
# 1. 准备目录
mkdir -p $BACKUP_DIR
echo "[$(date)] 开始备份..."
# 2. 打包核心数据
# /opt/stacks: 容器 Compose 配置
# /opt/dockge: Dockge 面板数据
# /opt/docker_data: 各容器挂载的持久化数据
echo "[$(date)] 正在打包文件..."
tar -czf $BACKUP_DIR/$FILENAME /opt/stacks /opt/dockge /opt/docker_data
# 3. 检查打包结果
if [ $? -eq 0 ]; then
echo "[$(date)] 打包成功: $FILENAME"
else
echo "[$(date)] 打包失败!"
exit 1
fi
# 4. 同步到远程云盘 (Alist)
echo "[$(date)] 正在同步到远程家庭主机..."
# 容器内路径 /data/backup 对应宿主机 /opt/backup
docker exec rclone rclone copy /data/backup/$FILENAME $RCLONE_REMOTE:$REMOTE_DIR
# 5. 清理本地 7 天前的旧备份
echo "[$(date)] 清理旧备份..."
find $BACKUP_DIR -name "docker_backup_*.tar.gz" -mtime +7 -exec rm {} \;
echo "[$(date)] 全部完成!"
-
赋予权限并测试:
chmod +x /opt/backup_docker.sh /opt/backup_docker.sh运行后检查家里电脑 D 盘是否收到文件)
第四步:设置定时任务 (Crontab)
让 VPS 每天自动执行。
-
编辑定时任务:
crontab -e(如果是第一次运行,选 1 (nano) 编辑器)
在文件最后一行添加:
0 21 * * * /opt/backup_docker.sh(按 Ctrl+X, Y, Enter 保存)
-
修正时区 (可选): 如果 VPS 是 UTC 时间,建议改为北京时间,否则 4 点可能是中午 12 点。
sudo timedatectl set-timezone Asia/Shanghai
第五步:终极演习:灾难恢复指南
假设 VPS 彻底损坏或更换新服务器,如何利用家里的备份文件“原地复活”?
1. 环境准备
在新 VPS 上安装基础环境
# 1. 安装 Docker
curl -fsSL https://get.docker.com | bash
# 2. 安装解压工具
apt install tar
2. 上传备份
从家里电脑找到最新的 docker_backup_xxx.tar.gz,上传到新 VPS 的 / 根目录。
3. 解压还原
# 解压到根目录,会自动恢复到 /opt/stacks 等位置
tar -xzf docker_backup_xxx.tar.gz -C
4. 一键复活
# 启动 Dockge
cd /opt/dockge
docker compose up -d
- 访问 Dockge 面板,所有之前的容器(FileBrowser, Uptime Kuma, Rclone 等)都会出现在列表里。
- 点击 "Update" 或 "Start",它们就会自动拉取镜像并以原本的配置启动。
- 数据、配置、密码,统统都在,完美复刻!
💬 评论