快轉到主要內容

Rclone 簡單搞定Linux電腦雲端硬碟同步,支援Google雲端、OneDrive、Dropbox、MEGA

分類   Linux系統 Linux好用軟體 Self-hosting自架
標籤   Google Drive Nextcloud Amazon Web Services
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

想要同步雲端硬碟檔案又不想裝一堆客戶端?

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

Rclone一個工具搞定!

Rclone是受Rsync所啟發的軟體,開發者Nick Craig-Wood稱其為"rsync for cloud storage"

Rclone特色功能如下:

  • 比Rsync效能更好,加入多執行緒支援
  • 開源軟體,不會蒐集使用者資料
  • 跨平台支援Linux/Windows/macOS
  • 使用靈活,可以用純文字指令操作,也有網頁圖形介面
  • 支援許多雲端硬碟,例如Google Drive、OneDrive、Dropbox、pCloud、MEGA、NextCloud、Amazon S3、Backblaze B2等等。
  • 因為能連線到多個雲端硬碟,所以能在不同雲端之間同步檔案
  • 支援本機加密後再上傳檔案
  • 透過FUSE掛載雲端到到本機,直接修改遠端檔案。
  • 支援掛載遠端FTP、WebDAV伺服器、檔案系統,當作Rsync備份檔案之用。

本文Ivon示範如何在Linux安裝rclone,討論如何連線到Google雲端硬碟,並將其掛載到本機硬碟。最後介紹rclone排程備份的作法。

其他家雲端的操作概念大同小異。

1. 安裝Rclone
#

  1. 參照 安裝指示,x86_64架構的Linux可以直接下載最新版的執行檔
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64

sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone

sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb
  1. Linux設定檔位置用指令rclone config file查看,通常位於 ~/.config/rclone/rclone.conf

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

2. 啟動Rclone圖形界面
#

Rclone最近的版本加入了React寫成的網頁,讓一些基本操作可以用圖形界面完成。

WebUI所做的變更會自動寫入rclone.conf,所以指令和WebUI二者可以交替使用。

使用以下指令啟動WebUI,設定帳號為admin,密碼為password

rclone rcd --rc-web-gui --rc-user=admin --rc-pass=password --rc-addr localhost:5572

之後使用瀏覽器開啟http://localhost:5572

3. 連線到Google雲端硬碟
#

你可以直接在Rclone WebUI管理Google雲端的檔案。

根據 Rclone官方文件,如果你直接用RClone的OAuth ID登入Google雲端,就是跟其他RClone用戶共享帳號,可能會被限制流量。建議用量大的用戶,手動給自己的Google雲端硬碟申請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的Configs界面新增Google Drive,填寫Client Auth和Client Secret,再登入Google帳號。

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

4. 掛載Google雲端硬碟到本機
#

讓Google雲端可以用Linux檔案管理員存取。

  1. Rclone的這個功能是透過FUSE實現的,確認Linux的FUSE套件版本:
fusermount -V
  1. 新增Google雲端硬碟的掛載點,並將權限設定為目前的使用者(我的使用者為user,屬於user群組)
sudo mkdir /run/media/user/GoogleDrive

sudo chown user:user /run/media/user/GoogleDrive
  1. 在Rclone WebUI的Mount界面新增Google Drive,輸入掛載點

  2. 這樣就能夠用Linux的檔案管理員開啟Google雲端的目錄了,直接新增檔案。惟網速影響可能載入速度會慢些。

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

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

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

所以我們使用copy上傳檔案。至於排程備份部份,我使用Systemd Timer。

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

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

vim ~/.config/systemd/user/rclonebackup.service
  1. 填入以下內容
[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/rclonebackup.timer
  1. 設定為每一小時執行一次
[Unit]
Description=Rclone backup

[Timer]
OnUnitActiveSec=1h
Unit=rclonebackup.service

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

systemctl --user enable --now rclonebackup.timer

參考資料
#

相關文章

Linux安裝中文輸入法一個指令搞定,透過Flatpak跑Fcitx5
分類   Linux系統 Linux好用軟體
標籤   Fcitx Flatpak Input Method
Sunshine:Linux版Moonlight教學,自架免費雲端串流遊戲服務+遠端桌面
分類   Linux系統 Self-hosting自架 Linux玩遊戲
標籤   Cloud Gaming Remote Desktop Steam Linux
Gluetun:讓Docker容器走VPN連線,沒網路就斷線,使用教學
分類   Linux系統 Self-hosting自架
標籤   Docker VPN Torrent

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請貼Imgur或Postimages。