快轉到主要內容

Rclone + GUI教學,簡單搞定Linux電腦雲端同步,支援Google Drive、OneDrive、Dropbox、MEGA

· 民國115年丙午年
·
切換繁體/簡體 ·
分類 Linux系統 Linux好用軟體 Self-hosting自架
標籤 Rclone Media Server Google Drive Nextcloud Amazon Web Services
目錄

想要同時使用多個雲端硬碟又不想裝一堆客戶端?

你的雲端硬碟供應商沒有提供Linux版桌面客戶端嗎?

Rclone一個工具搞定!

Rclone是受Rsync所啟發的軟體,開發者Nick Craig-Wood稱其為"rsync for cloud storage",或可理解為一把萬用的「瑞士軍刀」!

提供強大的指令,還有直觀的面板,讓你存取大大小小的檔案。

Rclone特色功能如下:

  • 本體是Go語言寫成的單一執行檔,沒有其他依賴項目,安裝簡單
  • 比Rsync效能更好,加入多執行緒支援
  • 開源軟體,不會蒐集使用者資料
  • 跨平台支援Linux、Windows、macOS
  • 使用靈活,可以用純文字指令操作,也有網頁圖形介面
  • 支援許多雲端硬碟,例如Google Drive、OneDrive、iCloud、Dropbox、pCloud、MEGA、NextCloud、Amazon S3等等
  • 支援掛載遠端FTP、SSHFS、SMB、WebDAV伺服器、檔案系統,當作Rsync備份檔案之用。
  • 可透過rclone serve將自身變身為一個簡易HTTP檔案分享伺服器,後端抽象化,對客戶端來說看到的都是一樣的路徑
  • 因為能同時連線到多個雲端硬碟,所以能在不同雲端之間同步檔案
  • 支援本機加密後再上傳檔案
  • 透過rclone mount將雲端目錄掛載到本機瀏覽,直接在檔案管理員修改遠端檔案。

本文Ivon示範 如何在Linux安裝Rclone,並以Google雲端硬碟為例子 示範Rclone的各種用法。

其他家雲端的操作概念大同小異,都是將雲端硬碟的連線方式寫到Rclone設定檔,然後取得授權。有的雲端硬碟只要依照Rclone的指示,登入帳號取得授權,或者填寫API權杖即可。

1. 安裝Rclone
#

參照官網指示安裝。

  1. 像Ubuntu這類非滾動發行版,用套件管理員安裝Rclone可能會裝到舊版,沒有跟上雲端供應商的API變化,所以建議從Rclone官網下載安裝指令稿,取得最新版的執行檔:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
  1. Linux的Rclone設定檔位置用指令rclone config file查看,通常位於~/.config/rclone/rclone.conf

  2. 另外,RClone也可以用Docker部署,參見:https://hub.docker.com/r/rclone/rclone

2. 啟動Rclone WebUI
#

Rclone基本上是要用指令操作的,執行rclone config指令,依照畫面上的指示操作就能新增雲端。官網文件有全部指令的詳細解說。

不過我認為這樣有點麻煩,所以有時候會用圖形界面。Rclone有React寫成的WebUI,讓一些基本操作可以用圖形界面完成。Rclone WebUI所做的變更會自動寫入rclone.conf,所以指令和WebUI二者可以交替使用。順帶一提Rclone有兩個WebUI,推薦大多數使用者使用gui版本,另外一個rc-web-gui是給進階使用者用的。

  1. 使用以下指令啟動WebUI,user設定帳號為admin,pass設定密碼為password。addr後面參數接的是IP位址與通訊埠,localhost就是只有本機能存取Rclone WebUI,0.0.0.0則是開放遠端連線。
rclone gui --user=admin --pass=password --addr localhost:8888
  1. 之後使用瀏覽器開啟http://localhost:8888登入。

  1. 終端機關掉後Rclone WebUI就會跟著停止。若你要讓Rclone WebUI作為常駐服務執行,請為目前的使用者新增Systemd服務:
mkdir -p ~/.config/systemd/user/

vim ~/.config/systemd/user/rclone-gui.service
  1. 填入啟動WebUI的指令
[Unit]
Description=rclone GUI
After=networking.service

[Service]
Type=simple
ExecStart=rclone gui --user=admin --pass=password --addr localhost:8888 --no-open-browser
Restart=always
RestartSec=10

[Install]
WantedBy=default.target
  1. 然後設定開機自動啟動服務
systemctl --user daemon-reload

systemctl --user enable --now rclone-gui
  1. 查看服務狀態
systemctl --user status rclone-gui

3. 使用Rclone WebUI瀏覽雲端檔案
#

以Google的為例,Rclone支援連線到「Google雲端」和「Google相簿」,但是二者是不同的服務,需要分開設定。

  1. 開啟Rclone WebUI → Remotes → New Remote。name任意填寫,type選取Google Drive,其餘留空。

  2. 依照畫面指示登入Google帳號,授權Rclone存取你的檔案。

  3. 到Explorers,點選Google Drive,就可以檢視Google雲端檔案了。

註解:Rclone是用OAuth ID登入Google雲端的。根據官方文件,如果你直接用Rclone的OAuth ID登入Google雲端,就是跟其他Rclone用戶共享帳號,可能會被限制流量,出現Quota Exceed錯誤。建議用量大的用戶,手動給自己的Google雲端硬碟申請OAuth ID。

點選展開OAuth ID申請步驟:
  1. Google Cloud Console,點選左上角新增專案

  2. 點選左邊側邊欄 → API程式庫,新增Google Drive API

  3. 回到上一頁,點選左邊側邊欄 → 新增OAuth同意畫面,User Type設定為External

  4. 應用程式資訊設定為rclone

  5. 如圖勾選以下範圍(scope)

  6. 把自己的電子郵件加入測試使用者

  7. 點選左邊側邊欄 → 憑證 → 建立憑證 → 新增OAuth用戶端ID

  8. 之後會得到一組OAuth Client ID和OAuth Client Secret

  9. Rclone WebUI → Remotes → New Remote。填寫Client Auth和Client Secret,再登入Google帳號

  10. 這樣在Rclone WebUI的Browser界面就可以檢視Google雲端檔案了。

4. 將雲端掛載為本機資料夾
#

將雲端硬碟掛載為本機檔案系統,這樣除了WebUI之外,也可以直接用Linux的檔案管理員(如KDE Dolphin或GNOME Nautilus)瀏覽遠端資料夾,對雲端檔案進行修改。

有時候這種載入速度會比在WebUI瀏覽還要快。

掛載指令叫做rclone mount,需注意的是,rclone mount並不會將所有雲端的檔案下載到本機,僅是預覽檔案列表而已。除非你開啟檔案,或者複製到本機的其他目錄,否則檔案不會下載。取消掛載之後,檔案就無法存取了。若要確實將檔案下載到本機,請改用rclone copy指令。

  1. rclone mount功能是透過FUSE實現的,一般使用者不需要Root權限便能掛載。確認Linux系統的FUSE套件版本:
fusermount -V
  1. /run/media/使用者名稱/新增Google雲端硬碟的掛載點,並將權限設定為目前的使用者。我的使用者為user,屬於user群組
sudo mkdir -p /run/media/user/google-drive/

sudo chown user:user /run/media/user/google-drive/
  1. 在Rclone WebUI → Mounts → New Mount,新增Google雲端,輸入掛載點

  2. 建議在vfs-cache-mode選取full,讓本機程式打開雲端檔案的時候能使用快取

  3. 這樣就能夠用Linux的檔案管理員開啟Google雲端的目錄了,例如KDE桌面的Dolphin會在側邊欄顯示Rclone掛載的目錄。這裡直接新增或刪除檔案都行。惟網速可能影響載入速度。Rclone WebUI程式一停止,這個掛載目錄也會自動失效。


  1. 如果你希望Linux系統開機自動掛載Google雲端的話,就新增一個Systemd服務:
vim ~/.config/systemd/user/rclone-mount-google-drive.service
  1. 填入Rclone掛載Google雲端的指令。注意ExecStart=這行,從cat ~/.config/rclone/rclone.conf指令輸出的結果可以得知,Rclone WebUI自動新增的設定檔應該叫做google-drive,所以這裡讀取Google的設定檔,並將Google雲端的根目錄掛載到/run/media/user/google-drive。最後ExecStop=設定服務停止後自動取消掛載Google雲端。
[Unit]
Description=Rclone mount Google Drive service
After=network.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount "google-drive:/" "/run/media/user/google-drive" --vfs-cache-mode full
ExecStop=/usr/bin/fusermount -u /run/media/user/GoogleDrive
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
  1. 設定開機自動啟動服務
systemctl --user daemon-reload

systemctl --user enable --now rclone-mount-google-drive.service

5. 排程大量備份本機目錄到雲端
#

如果要自動定期將某個目錄大量備份到雲端呢?rclone mount有點太慢了,此時就得使用rclone copy指令。

Rclone提供rclone copy以及rclone sync兩種指令,copy指的是上傳檔案,不刪除多餘檔案;sync則是讓遠端與本機目錄的檔案同步,有多餘的檔案會刪除。

所以我們使用copy上傳檔案,比較不會有誤刪檔案的風險。至於排程備份部份,我使用Systemd Timer控制。

  1. 請看下面的指令,這是將本機的目錄/home/user/Documents上傳到Google雲端的/Backup目錄。
rclone copy -v "/home/user/Documents" "GoogleDrive:/Backup"

也可以將二者順序反過來,變成將雲端目錄的檔案下載到本機目錄。

rclone copy -v "GoogleDrive:/Backup" "/home/user/Documents"
  1. rclone copy是複製一個目錄下的「全部內容」,假設Documents下有複數個檔案和目錄,那麼上傳到Backup的就是那些檔案,目錄結構亦會保留,但不包含Documents這個目錄。

  2. 為目前使用者新增Systemd Unit

mkdir -p ~/.config/systemd/user/

vim ~/.config/systemd/user/rclone-backup.service
  1. 填入以下內容,ExecStart=這行填入上傳檔案的指令。
[Unit]
Description=Rclone backup

[Service]
ExecStart=/usr/bin/rclone copy -v "/home/user/Documents" "GoogleDrive:/Backup"

[Install]
WantedBy=multi-user.target
  1. 再新增Timer
vim ~/.config/systemd/user/rclone-backup.timer
  1. 設定為每一小時執行一次
[Unit]
Description=Rclone backup

[Timer]
OnUnitActiveSec=1h
Unit=rclone-backup.service

[Install]
WantedBy=multi-user.target
  1. 啟用服務
systemctl --user daemon-reload

systemctl --user enable --now rclone-backup.timer

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。