LBJ_Blog

一个计算机小白,努力让自己变得多彩

Linux挂载 Infini-Cloud 并实现 Docker 项目自动备份指南

前言

本指南涵盖了从安装 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
  1. 配置 WebDAV 连接
    执行 rclone config,按照以下关键点输入:
  • name: infini
  • Storage: 选择 WebDAV
  • url: https://dav.teracloud.jp/dav/
  • vendor: Other
  • user: 填写你的用户名
  • pass: 选择加密输入,填写 App Password (在云盘后台生成)

三、 (可选) 挂载云盘为本地磁盘
如果您只需要备份功能,此步可跳过。如果需要像本地硬盘一样查看文件,请执行此步。

  1. 创建挂载点
1
sudo mkdir -p /mnt/infini
  1. 创建 Systemd 服务实现开机自启
    创建文件
1
vim /etc/systemd/system/rclone-infini.service:
TOML
1
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. 启动服务
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
sudo crontab -e

在文件底部添加:

代码段

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