rclone
安裝
依照官網下在binary檔進行安裝,apt下載的版本是比較舊的
設定
依照rclone config的指示進行設定
- 申請google OAuth client id,以便提高效能,使用 rclone config的時候會被詢問Option client_id.和Option client_secret.的時候可以填入
https://rclone.org/drive/#making-your-own-client-id
如果需要使用服務帳號
填入 JSON 金鑰檔案的完整路徑,例如:
1 | /home/username/.config/rclone/service-account.json |
或使用 ~ 代表家目錄:
1 | ~/rclone-service-account.json |
jenhaoyang: 從哪裡取得service-account.json
GitHub Copilot: # 如何取得 Service Account JSON 金鑰檔案
Service Account JSON 金鑰檔案需要從 Google Cloud Platform (GCP) 建立和下載。以下是完整步驟:
建立service account步驟
rclone 在個人帳戶不要使用service account,因為沒辦法打開GSuite來設定權取Google drive API的權限
測試rclone連線
如果使用service account,必須把資料夾分享給service account的gmail帳號,因為他不能直接存取我們的google drive。另外也檢查的時候也必須要指定顯示與我們共用的資料夾,不然會看不到東西。
1 | rclone ls google-remote: --drive-shared-with-me |
https://ivonblog.com/posts/rclone-linux/
rclone mount
- 記得加上
--daemon啟用背景執行 --drive-shared-with-me也記得要加
On Linux/macOS/FreeBSD start the mount like this, where /path/to/local/mount is an empty existing directory:1
rclone mount remote:path/to/files /path/to/local/mount --drive-shared-with-me --daemon
rclone copy
rclone copy gdrive:backups/photos_backup /home/user/photos_restored
rclone copy 下載參數
核心參數建議
這是一個針對下載大量照片的 rclone copy 建議指令範本:
1 | rclone copy --transfers=32 --checkers=64 --fast-list --progress remote:path/to/photos /local/path/to/photos |
參數詳解與設定建議
--transfers=N- 作用:設定同時傳輸的檔案數量。這是提升大量小檔案下載速度最重要的參數。
- 預設值:4
- 建議設定:對於大量照片,您可以大幅提高此數值。建議從
16或32開始測試,如果您的網路頻寬和 CPU 效能允許,可以逐步增加,例如64或更高。需要注意的是,過高的數值可能會導致記憶體耗盡或被雲端服務商限速。
--checkers=N- 作用:設定並行檢查檔案的執行緒數量。在開始傳輸前,rclone 會檢查來源和目的地的檔案。增加此數值可以加快這個過程。
- 預設值:8
- 建議設定:此數值通常可以設定為
--transfers的兩倍。例如,如果您設定--transfers=32,可以將--checkers設定為64。這有助於檢查程序快速完成,讓傳輸程序盡快開始。
--fast-list- 作用:這個參數會一次性列出遠端所有的檔案,而不是逐級遞迴掃描。對於包含大量檔案的目錄,這可以顯著減少列出檔案所需的時間。
- 建議設定:在下載大量照片時,強烈建議啟用此參數。
--progress(-P)- 作用:顯示即時的傳輸進度,包括傳輸速度、預計剩餘時間和正在傳輸的檔案。這不會直接提升速度,但能幫助您監控傳輸狀況並判斷參數調整是否有效。
其他可選優化參數
--order-by string- 作用:控制檔案的傳輸順序。在某些情況下,混合傳輸大小檔案可能比隨機傳輸更有效率。
- 建議設定:可以嘗試
--order-by "size,mixed,75",這會讓 rclone 優先處理 75% 的小檔案和 25% 的大檔案,有助於保持傳輸管道飽和。
--no-traverse- 作用:如果您只是要複製少量新檔案到一個已經很大的本地目錄,使用此參數可以避免掃描整個目標目錄,從而加快啟動速度。
- 建議設定:僅適用於增量備份的場景。
--checksum(-c)- 作用:讓 rclone 不僅僅依賴檔案大小和修改時間,還會檢查檔案的校驗和 (checksum) 來判斷檔案是否相同。這會增加一些 CPU 負擔,但在確保資料完整性上更可靠。如果您的首要目標是速度,可以不加此參數。
如何找到最適合您的設定?
- 從建議值開始:使用
--transfers=32和--checkers=64作為起點。 - 監控效能:執行指令並加上
--progress參數,觀察傳輸速度和穩定性。 - 逐步調整:
- 如果您的 CPU 使用率和網路頻寬都還很低,可以嘗試逐步增加
--transfers和--checkers的數值。 - 如果開始出現大量錯誤訊息(例如
rateLimitExceeded或timeout),或者速度不升反降,表示數值設定得太高,需要調降。
- 如果您的 CPU 使用率和網路頻寬都還很低,可以嘗試逐步增加
注意事項
- 雲端服務商的限制:不同的雲端儲存(如 Google Drive, Dropbox, S3)對 API 的請求頻率有不同的限制。特別是 Google Drive,對於檔案的建立(這也間接影響下載)有每秒約 2-3 個檔案的限制。在這種情況下,即使瘋狂提高
--transfers參數,速度也無法提升,甚至可能因觸發限制而變得更慢。 - 硬體資源:較高的
--transfers和--checkers會消耗更多的記憶體和 CPU 資源。請確保您的電腦有足夠的資源來應付。 - 打包檔案:如果照片檔案極小(例如都只有幾 KB),且數量極大(數十萬甚至百萬),最有效率的方式可能是在遠端將它們打包成一個大的壓縮檔(如 .zip 或 .tar),然後再下載這個單一的大檔案。 這可以完全繞過小檔案傳輸的延遲問題。
reclone設為service
啟動gui
rclone rcd –rc-web-gui –rc-web-gui-update –rc-no-auth
rclone的服務設定檔放在~/.config/systemd/user/底下
參考
https://rclone.org/commands/rclone_rcd/
https://gist.github.com/kabili207/2cd2d637e5c7617411a666d8d7e97101