跳至主要內容
說明中心

類別

搜尋說明中心Ctrl K
本頁內容

使用 rclone 將 Synology NAS 備份到 Drime

透過 rclone 的官方 Drime 後端,在 Docker 中執行 rclone 並以 DSM 的 Task Scheduler 排程,將 Synology NAS 的資料夾複製及同步到 Drime。

更新於 Web

本指南依據 rclone 和 Synology 的官方說明文件撰寫:rclone Drime 後端、在 Docker 中使用 rclone、Synology Task Scheduler 和 Synology SSH。

rclone 提供官方的 Drime 後端,因此 Synology NAS 可以依排程將資料夾複製到 Drime:rclone 在 NAS 上的 Docker 中執行,再由 DSM 的 Task Scheduler 啟動。檔案會以一般檔案的形式傳到 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 的遠端(remote)。

  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 中,建立一個 Scheduled Task,並選擇 root 使用者。

    選擇 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:除非設定了 TZ 變數,否則 rclone 容器會使用 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 上縮短名稱。

#後續步驟

這篇文章有幫助嗎?