使用 rclone 备份文件

koofr

koofr 是一个在线网盘,有10G免费空间,毕竟现在好用的网盘不多了。infini-cloud 也是一个,搞活动能送到35G。今天之所以用 koofr 做备份,一是由于 infini-cloud 我已经用掉好多空间了,二是由于 rclone 内置 koofr 协议,而 infini-cloud 只能通过 WebDav 转接,速度相对会慢一些。

设置

登录 Koofr 后,进入 Preferences,点击生成新密码,给它起个名字(如 rclone 或 backup),然后点击 Generate,为相应应用生成专用密码。这个密码只用于 rclone,不能用于普通登录。立即复制这个密码,因为它只会显示一次。

rclone

rclone 是网盘同步工具,它支持很多网盘和协议。

配置

在终端进入配置:rclone config,按提示操作:

  • 输入 n,新建 remote
  • 输入 remote 名称,例如 koofr
  • 在存储类型列表中找到并输入对应数字选择 Koofr(或直接输入 koofr)
  • provider:输入 koofr(或选择 Koofr)
  • user:输入 Koofr 注册邮箱
  • password:粘贴上面生成的应用专用密码(rclone 会自动加密保存)
  • 其他选项保持默认(直接 Enter 即可)
  • 最后输入 q 退出配置

检测

使用 rclone lsd koofr:/ 看是否能正常列出 Koofr 根目录的文件/文件夹。

备份

如前文,我已经做了备份[1][2],在不花钱的大前提下,尽量按照备份的“3-2-1”原则,在原有的基础上再增加一个备份。

为了方便,我编写了一个脚本,把三个服务器备份到 koofr 上,并且尽可能的减少上传流量,只对变化的文件重新上传。脚本如下:

#!/bin/bash
# Koofr rclone 备份脚本

TODAY=$(date +%Y%m%d)

SOURCE_ROOT="/mnt/disk/backups"
REMOTE_ROOT="koofr:/Backup"

SERVERS=(
  "armbian"
  "cloudcone"
  "dedirock"
)

BASE_PARAMS="--fast-list --skip-links --local-no-check-updated --no-update-modtime"

if [ -t 1 ]; then
    PROGRESS_PARAM="--progress"
else
    PROGRESS_PARAM="--stats=0 --stats-one-line --verbose"
fi

for SERVER in "${SERVERS[@]}"; do
    LOCAL_PATH="$SOURCE_ROOT/$SERVER/$TODAY/"
    REMOTE_PATH="$REMOTE_ROOT/$SERVER/"

    echo "=== 正在同步 $SERVER ($TODAY) ==> 远端目录: $REMOTE_PATH ==="

    /usr/bin/rclone sync "$LOCAL_PATH" "$REMOTE_PATH" \
        $BASE_PARAMS \
        $PROGRESS_PARAM
done

其中 [ -t 1 ] 是来判断是否处于终端模式下,如果在终端下手工执行,则显示进度,方便观察;如果是 cron 自动执行,则只看一些重要信息,避免日志里充满了刷屏数据。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注