跳到主要内容
帮助中心

分类

搜索帮助中心Ctrl K
本页内容

使用 rclone 将 Synology NAS 备份到 Drime

通过 rclone 官方 Drime 后端,在 Docker 中运行 rclone,并用 DSM 的任务计划定时将 Synology NAS 上的文件夹复制和同步到 Drime。

更新于 Web

本指南依据 rclone 和 Synology 的官方文档编写:rclone Drime 后端、在 Docker 中使用 rclone、Synology 任务计划和 Synology SSH。

rclone 提供官方的 Drime 后端,因此 Synology NAS 可以按计划将其文件夹复制到 Drime:rclone 在 NAS 上的 Docker 中运行,由 DSM 的任务计划启动。文件会以普通文件的形式保存到 Drime,您可以打开、分享和下载它们。

目前没有任何一份官方文档完整介绍这套设置:本指南将两方的文档整合在了一起。Drime 不为 rclone 或 DSM 本身提供支持:如需相关帮助,请参阅它们的文档。

#准备工作

  • 一台运行 DSM 7 的 Synology NAS,以及一个管理员账户。

  • Synology 的 Docker 套件:DSM 7.2 及更高版本为 Container Manager,DSM 7.1 及更早版本为 Docker。

  • SSH 访问权限(仅当您希望使用 rclone 的交互式配置时需要)。

  • 一个 Drime 账户,且有足够的可用存储空间存放备份内容。

  • 一个 Drime API 令牌,按下一节的步骤创建。

#创建 API 令牌

  1. 在 Drime 网页版中,点击您的头像,然后点击设置 > 开发人员。

  2. 在 API 访问令牌中,点击创建令牌。

  3. 以 NAS 为令牌命名,例如“Synology NAS”,并保留全部权限。

    rclone 必须能够上传、列出和删除文件。只读令牌只允许 rclone 下载。

    “创建新令牌”对话框,已填写令牌名称,并显示“权限”下的各个标签页
  4. 点击创建,复制令牌,然后点击完成。

    令牌仅显示一次:请保留它以便下一步使用,或将其存入密码管理器。

    新令牌仅显示这一次,旁边有“复制”按钮,以及提醒您将令牌存放在安全地方的警告

令牌的所有选项请参阅创建 API 令牌。

#本指南中的命令

每条命令都按照 rclone 文档所示的方式运行 rclone 的官方 Docker 镜像。请替换其中的大写占位符:

占位符

替换为

示例

CONFIG_FOLDER

NAS 上用于存放 rclone 设置的文件夹

/volume1/docker/rclone

NAS_FOLDER

要备份的 NAS 文件夹,或用于存放还原文件的文件夹

/volume1/photo

DRIME_FOLDER

Drime 中接收备份的文件夹

NAS-backup/photo

YOUR_API_TOKEN

您的 Drime API 令牌

请使用以 /volume 开头的完整 NAS 路径。在 Docker 内部,rclone 会将 CONFIG_FOLDER 视为 /config/rclone,将 NAS_FOLDER 视为 /data。

#在 NAS 上配置 rclone

#使用 Container Manager,不使用 SSH

  1. 在 DSM 中,打开 Control Panel(控制面板)> Task Scheduler(任务计划)。

    点击 Create(创建),然后点击 Scheduled Task(计划任务)> User-defined script(用户自定义脚本)。

  2. 为任务命名,例如“rclone 配置”,并选择 root 用户。

  3. 在 Task Settings(任务设置)中,将配置命令粘贴到 Run command(运行命令)下。

    docker run --rm \
        --volume CONFIG_FOLDER:/config/rclone \
        --user $(id -u):$(id -g) \
        rclone/rclone \
        config create drime drime access_token YOUR_API_TOKEN

    该命令会下载 rclone 的官方镜像,并创建一个名为 drime 的远程存储。

  4. 保存任务,在列表中选中它,然后点击 Run(运行)。

  5. 完成后请删除该任务:任务中包含您的令牌。

#使用 SSH

如果您希望使用 rclone 的交互式配置:

  1. 在 DSM 中,打开 Control Panel > Terminal & SNMP(终端机和 SNMP)> Terminal(终端机),然后勾选 Enable SSH service(启用 SSH 服务)。

    Synology 提示,启用 SSH 可能会带来安全风险:完成后请将其关闭。

  2. 在您的电脑上通过 SSH 连接到 NAS,然后运行 sudo -i。

    通过 SSH 登录需要使用本地管理员组(administrators)中的账户,并且 sudo -i 会要求输入该账户的密码。

  3. 启动 rclone 的交互式配置。

    docker run --rm -it \
        --volume CONFIG_FOLDER:/config/rclone \
        --user $(id -u):$(id -g) \
        rclone/rclone \
        config
  4. 回答 rclone 的问题,创建 drime 远程存储。

    输入 n 新建远程存储,名称输入 drime,存储类型输入 drime,然后在 access_token 处粘贴您的 API 令牌。

如需检查配置,将同一命令中的 config 替换为 listremotes 后运行,结果中应会列出 drime:。

#首次复制

请先使用 rclone copy:它只会向 Drime 添加文件,绝不会删除 Drime 中的任何内容。按照上述方法创建任务,选择 root 用户,并使用以下命令:

docker run --rm \
    --volume CONFIG_FOLDER:/config/rclone \
    --volume NAS_FOLDER:/data:shared \
    --user $(id -u):$(id -g) \
    rclone/rclone \
    copy /data drime:DRIME_FOLDER

运行该任务,然后在 Drime 中检查结果。

#使用 sync 让 Drime 保持同步

rclone sync 会让 Drime 文件夹与 NAS 文件夹保持一致。

运行一次以下命令,并查看任务的输出:

docker run --rm \
    --volume CONFIG_FOLDER:/config/rclone \
    --volume NAS_FOLDER:/data:shared \
    --user $(id -u):$(id -g) \
    rclone/rclone \
    sync /data drime:DRIME_FOLDER --dry-run

确认列表符合预期后,删除 --dry-run。rclone 在 Drime 中删除的文件会移至您的 Drime 垃圾桶;使用 rclone 的高级选项 hard_delete 则会将其永久删除。

#定时备份

  1. 在 Control Panel > Task Scheduler 中,使用 root 用户创建一个 Scheduled Task。

    选择 User-defined script。

  2. 在 Schedule(计划)标签页中,选择运行的日期和时间,例如每天晚上。

  3. 在 Task Settings 中,将您的 copy 或 sync 命令粘贴到 Run command 下。

    您还可以让 DSM 通过邮件向您发送运行详情,或仅在脚本异常终止时发送。

#在 Drime 中检查您的文件

打开 Drime 网页版:DRIME_FOLDER 中保存着您的文件,文件名与原来相同。与其他文件一样,它们会占用您的 Drime 存储空间。

补充说明(来自 rclone 的 Drime 文档):

  • 按大小检测更改:Drime 不向 rclone 提供修改时间或哈希值,因此编辑后大小未变的文件不会被再次复制。

  • 文件名最长可达 255 字节(UTF-8 编码)。

  • 工作区:使用 rclone 的高级选项 workspace_id,可将备份发送到某个工作区,而不是您自己的文件中。

  • rclone 输出中的时间为 UTC 时间:除非设置了 rclone 容器的 TZ 变量,否则容器使用 UTC。

#还原文件

使用 rclone copy 反向操作,将文件从 Drime 复制回来。请使用 NAS 上的一个空文件夹作为 NAS_FOLDER,例如 /volume1/restore:

docker run --rm \
    --volume CONFIG_FOLDER:/config/rclone \
    --volume NAS_FOLDER:/data:shared \
    --user $(id -u):$(id -g) \
    rclone/rclone \
    copy drime:DRIME_FOLDER /data

您也可以在 Drime 网页版中下载单个文件。

#遇到问题时

您看到的情况

处理方法

rclone 提示在其配置文件中找不到 drime 部分

该命令使用的 CONFIG_FOLDER 与配置时不同。请在每条命令中使用同一个文件夹。

rclone 找不到 /data,或什么都没有复制

NAS_FOLDER 有误。请使用以 /volume 开头的文件夹完整路径。

任务一开始就因 Docker 错误而失败

请检查是否已安装 Container Manager(DSM 7.1 上为 Docker),以及任务是否以 root 身份运行。

rclone 无法再连接到 Drime

令牌可能已被删除或撤销:此时 Drime API 会返回 401 以及 Unauthenticated. 错误信息。请创建新令牌,然后重新运行配置命令,并将其中的 config create drime drime access_token YOUR_API_TOKEN 替换为 config update drime access_token YOUR_API_TOKEN。

rclone 可以列出和下载,但无法上传

令牌可能为只读。请创建全部令牌,然后用同样的方法(config update)替换旧令牌。

存储空间快满时上传失败

您的 Drime 存储空间可能已满。请参阅查看并释放存储空间。运行 sync 后,也请清空 Drime 垃圾桶。

您的 Drime 账户开启了双重验证

无需任何更改:rclone 使用的是 API 令牌,而不是您的密码。

文件名很长的文件没有被复制

该文件名超过了 255 字节。请在 NAS 上缩短文件名。

#后续步骤

这篇文章对您有帮助吗?