最近有個需求需要把 Google Drive 的資料夾從一個帳號搬移到另一個帳號去。
本來想說應該滿簡單,畢竟平常我們要複製檔案到自己硬碟上的話有個「建立副本」的選項,搬資料夾應該也同理,結果很遺憾的,並沒有這種選項。

查了一下,Google 只有給 Google Workspace(也就是教育或是企業帳號)提供類似的服務1,對於一般帳號的使用者,最佳的解法就是…….下載到自己電腦之後再上傳給目標帳號?
媽媽咪呀,貴為科技巨頭,網路服務的代名詞,網際網路的第一把交椅,Google 居然給得出這種解法?真是跪了。
總之,對於家裡網速慢,下載這資料夾就要花上一整天,上傳更不知道要搞多久的我來說,就只好來想想有沒有其他的解法了。
後來我想想,之前有拿過 rclone 用程式來上傳一些東西到 Google Drive 過,能不能用這工具來協助搬這些東西。
查了一下資料發現,rclone 支援 Google Drive 的 Server-side copy 耶,利用 --drive-server-side-across-configs 參數就能讓 Google 伺服器自己把檔案給倒過去。不會吃到自己的網路頻寬或硬碟空間。
需要注意的是 Google Drive 自己有 Rate Limit2,一天上傳最多只能到 750 GB。但我們這裡走的是 Server 對 Server 傳,不知道這樣扣打是怎麼計算的,網路上是說大約 2~300 GB 可能會觸發,踩到的話就要等隔天再繼續。我自己是沒踩到,所以也沒辦法提供建議。
安裝方式
rclone 有提供 docker image, 我們可以不用去安裝,用一台有 docker 的設備跑就可以了,不過做 Google OAuth 驗證比較麻煩。
如果要安裝的話,官網的安裝指南寫得很詳盡可以參考。像是 Linux 就有提供便捷一行腳本直接安裝:
sudo -v ; curl https://rclone.org/install.sh | sudo bash我自己的話是之前就已經載過,就繼續用囉。
使用方式
先到 Google Drive 網頁,登入【來源帳號】,將【想要複製的資料夾】開共享給【目標帳號】。
接下來登入【目標帳號】,打開剛剛開好共享的資料夾,複製資料夾 ID,格式像是下圖所示:
設定 rclone
回到電腦上,我們要先準備好 rclone 的設定檔。我們先透過 rclone config 設定 Google Drive 的 Remote。
照著程式的指示填
- 先輸入
n新建來源 (remote) - remote name 填自己要的名字 (我填 gdrive)
- Option Storage 選 Google Drive (24)
- client_id/client_secret 留空
- scope 選 1 / Full access all files, excluding Application Data Folder.
- service_account_file 留空
- Edit advanced config 我們不需要,填 n
- Use web browser to automatically authenticate 這裡就是準備取 OAuth 驗證。一般是會填 y
之後會跳出瀏覽器視窗要過 OAuth,程式會彈出 OAuth 視窗或網址,如果在虛擬機或遠端 VM 的話掛個 port forward 吧。
OAuth 頁面同意之後,回到程式再跑 rclone config 應該會看到剛剛設定好的結果,在 ~/.config/rclone/rclone.conf 也能看到相關設定。
設定好之後就是最興奮的搬家環節了~ 輸入以下指令:
rclone copy "{剛剛建立的remote},root_folder_id={前面複製的資料夾ID}:" "{剛剛建立的remote}:/{目標路徑}" -P --drive-server-side-across-configs等他跑完之後就可以在目標資料夾看到熱騰騰的檔案了。至於原本的共享資料夾、還有原本帳號的來源資料夾就都可以刪掉囉。
Footnotes
-
https://knowledge.workspace.google.com/admin/getting-started/transfer-data-between-google-workspace-accounts / https://support.google.com/accounts/answer/6386856?sjid=8547387473862392030-NC ↩
-
Google 官方有給 Workspace Admin 關於 Rate Limit 的文件,不過也沒提到 Server side clone rate limit https://developers.google.com/workspace/drive/api/guides/limits ↩
![[rclone 官方文件]](https://bucket.jcxyis.com/raw/OGk4xe.webp)


](https://bucket.jcxyis.com/raw/X0q2gF.webp)
](https://bucket.jcxyis.com/raw/SbOj7Q.webp)