現代人很常會同時使用這些線上的儲存服務:Google Drive、OneDrive、Dropbox,或是公司會用 AWS S3
那這些儲存空間的管理就會變成一個麻煩,我們可能要各自登入這些服務的網頁,然後下載再上傳等等。
現在 AI 的時代,除了 ChatGPT 可以快速幫我們回答問題以外,也會開始有人使用像是 Claude Code、Codex 等等這種 CLI 工具。
這類工具最強大的地方是可以直接管理電腦的檔案。
如果我們今天想要讓 AI 幫忙處理電腦的檔案和 Google Drive 這種線上服務同步,那 rclone 就能幫上忙!
rclone 是什麼
rclone 是一個開源的 CLI 工具,用 Go 語言寫成。你可以把它想像成「雲端版的 rsync」,或是雲端儲存的瑞士刀。
支援的服務超過 70 種,包括:
- Google Drive、OneDrive、Dropbox
- AWS S3、Azure Blob、Google Cloud Storage
- SFTP、FTP、WebDAV
- …還有更多
核心功能有四個:複製、同步、搬移、掛載。
通常複製和搬移很常使用,同步的話要小心可能會刪除檔案
安裝與設定
安裝
常見的三個作業系統都支援:
| 系統 | 安裝指令 |
|---|---|
| macOS | `brew install rclone` |
| Linux | `curl https://rclone.org/install.sh | sudo bash` |
| Windows | `winget install Rclone.Rclone` |
安裝完驗證一下:
1 | rclone version |
設定 Google Drive(互動式)
rclone 用「remote」的概念管理不同的雲端服務。設定一個新的 remote:
1 | rclone config |
會進入互動模式,照著選:
1 | n) New remote |
設定完成後,測試連線:
1 | rclone lsd gdrive: |
lsd = list directories,只列出資料夾。ls 則會列出所有檔案。
設定 Cloudflare R2(S3 Compatible)
如果你用的是 Cloudflare R2 或其他 S3 相容的儲存服務,設定方式類似:
1 | rclone config |
1 | n) New remote |
需要準備的資訊:
| 項目 | 從哪裡拿 |
|---|---|
| Access Key ID | Cloudflare Dashboard → R2 → Manage R2 API Tokens |
| Secret Access Key | 建立 API Token 時產生,只顯示一次 |
| Account ID | Dashboard 右側欄,或網址列上的那串 ID |
| Region | 填 `auto`,R2 會自動分配最近的節點 |
到 Cloudflare Dashboard 的 R2 頁面,點「管理 R2 API 權杖」,然後選「建立 User API 權杖」:
權限選擇「物件讀取和寫入」就夠用了,如果只需要備份到特定 bucket,可以在下方「指定貯體」選擇:
建立完成後會顯示 Access Key ID、Secret Access Key 和 Endpoint,這三個就是 rclone 設定需要的資訊:
Secret Access Key 只會顯示一次,記得馬上複製存好!
R2 API Token 的完整申請流程可以參考這篇:
設定完一樣測試連線:
1 | rclone lsd r2: |
其他 S3 相容服務(如 Backblaze B2、Wasabi)設定方式幾乎一樣,只要換 provider 和 endpoint 就好。
實測一下上傳、更新、檢視的完整流程:
1 | # 1. 上傳檔案到 R2 |
到 Cloudflare Dashboard 也能確認檔案已經上傳成功:
進階:直接編輯設定檔
其實 rclone config 互動模式做的事情,就是把設定寫進一個叫 rclone.conf 的檔案。熟了之後可以直接編輯這個檔案,不用每次都一步步選。
查看設定檔位置:
1 | rclone config file |
打開來長這樣:
1 | [gdrive] |
每個 [名稱] 就是一個 remote,下面是連線參數。要新增 remote 就直接加一組,改參數也直接改。
如果是 CI/CD 或 Docker 環境,也可以用環境變數,完全不需要設定檔:
1 | export RCLONE_CONFIG_R2_TYPE=s3 |
環境變數格式:RCLONE_CONFIG_{REMOTE名稱}_{參數大寫}
核心指令對比
rclone 最重要的三個指令:copy、sync、move。很多人搞混,這邊用表格對比:
| 指令 | 行為 | 目的地多餘檔案 | 來源檔案 | 適用場景 |
|---|---|---|---|---|
| copy | 複製來源到目的地 | 保留 | 保留 | 備份、單向複製 |
| sync | 讓目的地與來源完全一致 | 刪除 | 保留 | 鏡像同步 |
| move | 搬移來源到目的地 | 保留 | 刪除 | 遷移、清理 |
關鍵差異
- copy:最安全,只會新增,不會刪除任何東西
- sync:會讓目的地「長得跟來源一樣」,目的地多出來的檔案會被刪掉
- move:搬完就刪,適合遷移場景
sync 會刪除目的地的多餘檔案!第一次用務必加 --dry-run 先模擬。
實測範例
把本地 /backup 資料夾複製到 Google Drive:
1 | # 先用 --dry-run 看看會做什麼 |
可以看到它列出了會複製哪些檔案,但因為是 dry-run,實際上沒有傳輸任何東西。
確認沒問題後,加上 --progress 實際執行:
1 | rclone copy /backup gdrive:/backup --progress |
--progress 會顯示即時進度,傳完後可以到 Google Drive 確認檔案有沒有到:
常用參數
| 參數 | 說明 |
|---|---|
| `--dry-run` | 模擬執行,不實際操作 |
| `--progress` | 顯示即時傳輸進度 |
| `--exclude` | 排除特定檔案,如 `--exclude "*.tmp"` |
| `--transfers 4` | 同時傳輸數量(預設 4) |
| `--log-file` | 輸出 log 到檔案 |
常用場景
場景 1:每日自動備份
用 crontab 排程每天凌晨 2 點備份:
1 | # 編輯 crontab |
這樣每天會自動把 documents 同步到 Google Drive,還有 log 可以追蹤。
crontab 中要用絕對路徑,/usr/bin/rclone 而不是 rclone。
場景 2:多雲備份
同一份資料備份到多個雲端,只需要一行指令就完成惹!
1 | # 先備份到 Google Drive |
場景 2.5:搭配 Claude Code 備份
這篇文章的圖片就是用 Claude Code + rclone 備份的,只要跟它說:
幫我把這篇文章的圖片全部備份到 R2 的 rclone bucket
Claude Code 就會自己組出 rclone copy 指令並執行:
到 Cloudflare R2 Dashboard 確認,13 個檔案全部到齊:
再也不需要自己辛辛苦苦的組合指令
用口語化的方式請 AI 幫忙就好
場景 3:雲端搬家
從 Dropbox 整個搬到 Google Drive:
1 | rclone copy dropbox:/ gdrive:/from-dropbox --progress |
如此一來就能把 Dropbox 直接都搬家到 Google Drive
不然自己慢慢下載再上傳有夠累人