前言
本指南涵盖了从安装 Rclone 到实现每日凌晨 3 点自动备份、自动清理 7 天前旧备份的全过程。
一、 环境准备
- 操作系统: Ubuntu 24.04.3 LTS
- 云盘服务: Infini-Cloud (支持 WebDAV)
- 工具: Rclone
二、 安装与配置 Rclone
1. 安装软件
1 2
| sudo apt update sudo apt install rclone fuse3 -y
|
- 配置 WebDAV 连接
执行 rclone config,按照以下关键点输入:
三、 (可选) 挂载云盘为本地磁盘
如果您只需要备份功能,此步可跳过。如果需要像本地硬盘一样查看文件,请执行此步。
- 创建挂载点
1
| sudo mkdir -p /mnt/infini
|
- 创建 Systemd 服务实现开机自启
创建文件
1
| vim /etc/systemd/system/rclone-infini.service:
|
TOML1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [Unit] Description=Rclone Mount InfiniCloud After=network-online.target
[Service] Type=simple ExecStart=/usr/bin/rclone mount infini: /mnt/infini \ --allow-other \ --allow-non-empty \ --vfs-cache-mode full \ --vfs-cache-max-size 10G ExecStop=/bin/fusermount -u /mnt/infini Restart=on-failure
[Install] WantedBy=multi-user.target
|
- 启动服务
1 2 3
| sudo systemctl daemon-reload sudo systemctl enable rclone-infini sudo systemctl start rclone-infini
|
四、 自动化备份脚本
创建备份脚本 /root/docker_backup.sh。该脚本直接调用 Rclone API,不依赖挂载点,更稳定。
1
| vim /root/docker_backup.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #!/bin/bash
# --- 配置区 --- REMOTE_NAME="infini" # rclone配置名 REMOTE_DIR="Backup/Docker" # 云端目录 DATE=$(date +'%Y-%m-%d_%H%M%S') BACKUP_NAME="DockerBackup_$DATE.tar.gz" LOG_FILE="/var/log/docker_backup.log" TEMP_DIR="/tmp/docker_backup_work"
# 需要备份的 Docker 项目目录 DOCKER_DIRECTORIES=( "/opt/NginxProxyManager" "/opt/telegram-to-mail" "/opt/bark" )
# --- 逻辑区 --- mkdir -p "$TEMP_DIR" echo "[$DATE] --- 备份任务开始 ---" >> "$LOG_FILE"
# 1. 打包压缩 echo "[$DATE] 正在打包项目..." >> "$LOG_FILE" tar -czf "$TEMP_DIR/$BACKUP_NAME" "${DOCKER_DIRECTORIES[@]}" 2>> "$LOG_FILE"
if [ $? -eq 0 ]; then # 2. 上传云端 echo "[$DATE] 上传中..." >> "$LOG_FILE" /usr/bin/rclone copy "$TEMP_DIR/$BACKUP_NAME" "$REMOTE_NAME:$REMOTE_DIR" >> "$LOG_FILE" 2>&1 if [ $? -eq 0 ]; then echo "[$DATE] 上传成功!" >> "$LOG_FILE" # 3. 清理云端 7 天前的备份 echo "[$DATE] 清理 7 天前的旧备份..." >> "$LOG_FILE" /usr/bin/rclone delete "$REMOTE_NAME:$REMOTE_DIR" --min-age 7d >> "$LOG_FILE" 2>&1 # 4. 清理本地临时文件 rm -f "$TEMP_DIR/$BACKUP_NAME" else echo "[$DATE] 错误:上传失败!" >> "$LOG_FILE" fi else echo "[$DATE] 错误:打包失败!" >> "$LOG_FILE" fi
echo "[$DATE] --- 任务完成 ---" >> "$LOG_FILE"
|
赋予执行权限
1
| chmod +x /root/docker_backup.sh
|
五、 创建定时任务 (Cron)
实现每天凌晨 3:00 自动执行:
打开 crontab 编辑器:
在文件底部添加:
代码段
1
| 0 3 * * * /bin/bash /root/docker_backup.sh > /dev/null 2>&1
|
六、 常用维护命令
查看备份日志: tail -f /var/log/docker_backup.log
查看挂载状态: df -h | grep infini
手动立即备份: sudo /root/docker_backup.sh
查看云盘文件列表: rclone ls infini:Backup/Docker