--- title: "08-全自动备份方案" created: 2025-12-30 tags: - 项目筑基 --- # 全自动备份方案 我们之前的步骤只是完成了“搭建”,现在要来补上“维护”这块拼图。 **“方便移植”和“定时备份”的核心逻辑是:** Dockge 的所有数据(包括它自己和它管理的容器配置)都存在 `/opt/stacks` 和 `/opt/dockge/data` 这两个文件夹里。 只要我们定期把这两个文件夹打包,上传到云盘(比如 Google Drive 或 阿里云盘),哪怕 VPS 爆炸了,你在新 VPS 上把文件拉回来,一行命令就能原地复活。 下面是最简单的**全自动备份方案**。 全自动备份系统架构图 (Daily Automation): ![[diagram-1767099343495-d8335426.png]] 灾难恢复流程图 (Disaster Recovery): ![[diagram-1767099408187-cd75fad8.png]] --- ### **第一步:安装备份工具 (Rclone)** Rclone 是 Linux 下的神器,能把你的 VPS 文件夹同步到几乎所有云盘。 **在 Dockge 中部署 Rclone** 1. 打开 Dockge 面板。 2. 点击 **+ Compose**。 3. **Name**: `rclone-backup`。 4. **配置**: *(注意:我们需要把备份目录和 Rclone 的配置目录挂载出来)* ```yaml 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 ``` 5. 点击 **Deploy**。 ![[image-8dd88fd3.png]] --- ### **第二步:配置 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)] 全部完成!" ``` 3. **赋予权限并测试**: ``` 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"**,它们就会自动拉取镜像并以原本的配置启动。 - **数据、配置、密码,统统都在,完美复刻!** --- ⬅️ [[07-静态网页怎么跑|静态网页怎么跑]] 🏠 [[00-网络与项目|00-网络与项目]] ➡️ [[09-迁移|迁移]]