全自动备份方案

我们之前的步骤只是完成了“搭建”,现在要来补上“维护”这块拼图。

“方便移植”和“定时备份”的核心逻辑是: Dockge 的所有数据(包括它自己和它管理的容器配置)都存在 /opt/stacks/opt/dockge/data 这两个文件夹里。 只要我们定期把这两个文件夹打包,上传到云盘(比如 Google Drive 或 阿里云盘),哪怕 VPS 爆炸了,你在新 VPS 上把文件拉回来,一行命令就能原地复活。

下面是最简单的全自动备份方案

全自动备份系统架构图 (Daily Automation):

diagram-1767099343495-d8335426

灾难恢复流程图 (Disaster Recovery):

diagram-1767099408187-cd75fad8

第一步:安装备份工具 (Rclone)

Rclone 是 Linux 下的神器,能把你的 VPS 文件夹同步到几乎所有云盘。

在 Dockge 中部署 Rclone

  1. 打开 Dockge 面板。
  2. 点击 + Compose
  3. Name: rclone-backup
  4. 配置: (注意:我们需要把备份目录和 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
  1. 点击 Deploy

    image-8dd88fd3

第二步:配置 Rclone 连接 (对接家庭 Alist)

通过命令行交互方式配置,连接更稳定。

  1. 进入容器配置向导: 在 VPS 终端执行:

    docker exec -it rclone rclone config
    
  2. 交互配置步骤

    • 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 -> 回车退出。

  3. 验证连接:

    docker exec rclone rclone lsd home_alist:/
    

    (如果列出了家里的盘符如 C: D:,说明连接成功)

第三步:编写全自动备份脚本

打包数据 -> 同步到家里 -> 清理旧数据。

  1. 创建脚本:

    nano /opt/backup_docker.sh
    
  2. 写入内容

#!/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)] 全部完成!"
  1. 赋予权限并测试

    chmod +x /opt/backup_docker.sh
    /opt/backup_docker.sh
    

    运行后检查家里电脑 D 盘是否收到文件)


第四步:设置定时任务 (Crontab)

让 VPS 每天自动执行。

  1. 编辑定时任务:

    crontab -e
    

    (如果是第一次运行,选 1 (nano) 编辑器)

    在文件最后一行添加:

    0 21 * * * /opt/backup_docker.sh
    

    (按 Ctrl+X, Y, Enter 保存)

  2. 修正时区 (可选): 如果 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",它们就会自动拉取镜像并以原本的配置启动。
  • 数据、配置、密码,统统都在,完美复刻!

⬅️ 静态网页怎么跑 🏠 00-网络与项目 ➡️ 迁移