拯救雲端硬碟資料,將 G Suite 教育版帳號中的檔案轉移至其他 Google 帳號

過去一直使用學校提供的 G Suite 帳號雲端硬碟來備份檔案,除了儲存空間是無限制外,上傳下載也都能跑滿速,

所以通常都來拿放檔案比較大但比較少用到的檔案,或是要分享大型檔案給其他人時使用,

從 2014 年一直用到現在,算一算也用了 7 年多了,總共已經累積使用了超過 2TB 的空間,

至於比較常用到或是重要一點的的檔案都還是放在 Dropbox 裡,還能搭配跨裝置同步的功能使用。

前情提要

今年初 G Suite 教育版除了更名為 Workspace for Education 之外,還發佈了儲存空間異動的公告 [1]

本來還想說生效時間是在明年(2022 年 7 月),還有相當久的時間,等之後再來煩惱就好,

沒想到在中秋連假前夕,9/16 當天,手機突然收到學校帳號被登出的訊息,需要重新登入驗證,

一開始想說只是例行的身分認證,就重新登入,結果登入後收到「您的帳戶已遭停用」的訊息:

 

當下心先涼了一半,就趕快先寄了一封信到計網中心詢問,不過當天已經是下班時間沒收到回覆。

後來查了一下學校 Gmail 服務條款才發現,不知道什麼時後加入了這條規範:

  • 「肄業生未領有畢業證書,故無法享有繼續使用信箱之權利,會於清查帳號時刪除該帳號。」

我依稀記得過去查條款的時候只有表示只要一年內至少有登入過一次,學校帳號就能持續使用,

而且照理說按照這個規範在 2015 休學的時候帳號應該就要被回收了,卻還能一直正常使用到現在,

不過也沒辦法了,畢竟條款還是加註了,不過停用前沒有發送任何的通知信,也是滿奇怪的。

 

後續收到計網中心回覆,的確是根據這個條款做處理的,但由於事情發生的太突然,很多重要資料都還遺留在帳號內,

我就再度發信請求開啟帳號權限做備份,還好計網中心還是很通人情的,給了我連假四天的時間做處理,

也因此別人的中秋四天連假是在歡慶過節,我是在電腦前拼命拯救我的寶貴資料,說來真辛酸。

 

[1] Workspace for Education 儲存空間政策異動:https://support.google.com/a/answer/10403871

 

著手備份

那麼問題來了,這麼多的檔案要備份到哪去呢?

Google 帳號的免費方案配發容量就只有 15 GB 而已,完全是一個不用多加考慮的方案,

我現有的 Dropbox 帳號雖然有 2TB,但也已經用掉約 1TB 了,加上需要轉移的大小,就會超過 3TB,

如果要升級 Dropbox 的方案,就要使用 Work Standard 的方案 [1],有 5TB 的空間,每個月約 $375 台幣。

 

如果是 Google 付費方案的話,首先參考了 Google One 的方案 [2],2 TB 的方案每個月 $330,

下一階是 5TB 方案(5TB 之後的方案只有在 APP 中列出),每個月就要 $825 台幣,有點小貴,

接著再去看看 Google Workspace 的方案 [3],Business Plus 的方案就有 5TB,而且每個月只要 $540 左右。

 

綜合了 Google 服務之間整合的便利性,備份或轉移檔案的過程會更方便,而 Dropbox 則小輸一點,

再加上我本身只有一個人要使用,不用怕 Workspace 的付費方式是以使用者數量做計算的,

所以最終還是選擇了 Google Workspace 的方案,然後綁定了自己的域名,順便把信箱轉移給 Gmail 代管。

 

不得不說,Workspace 的管理後台真的是相當強大,光選單就密密麻麻的,還有各式各樣的客製化設定,

大到 Google 各項服務的功能開關、小至每個服務的選項預設設定,或是個人化標誌、自訂網域都一應俱全,

加上可以一窺機構底下各個使用者的帳號資訊,如雲端硬碟檔案上傳下載內容、Gmail 信件讀取狀態等私密資料,

還有登入位置、登入裝置資訊以及各式各樣的服務操作紀錄和報表,才知道原來平常是怎麼被公司追蹤的(?)

 

[1] Dropbox 方案列表:https://www.dropbox.com/plans?tab=work

[2] Google One 方案列表:https://one.google.com/about/plans

[3] Google Workspace 方案列表:https://workspace.google.com/pricing.html

 

開始轉移檔案

由於雲端硬碟中的檔案總容量也不是小數目,絕對是不考慮用下載、上傳這種方式轉移,

更不可能為了這次轉移這批檔案,就去買一顆好幾 TB 的外接硬碟再開桌面同步轉移,

只能以不佔用電腦本身硬碟容量,又能快速在帳號間傳送檔案的方式為前提來想辦法。

 

共用雲端硬碟

首先是嘗試利用 Workspace 中的「共用雲端硬碟」來傳送資料,這應該算是最方便的方式,拖拉就能搞定。

正常來說,只要共用雲端硬碟內共用的成員是「內容管理員」以上的層級,都能自由在該雲端硬碟內自由上傳、移動或刪除檔案,

不過好死不死,學校禁用了「遷移至共用雲端硬碟」這個設定,導致就算共用雲端硬碟是由自己建立的,

我也沒辦法直接將現有的雲端硬碟檔案移動進去,只能單純在裡面上傳、下載或移出檔案,可憐哪。

 

轉移擁有者

再來是試著使用「共用」這個功能中提供的方便選項,也就是「設為擁有者」。

只要先將檔案甚至是整個資料夾和特定帳號共用,接著再從共用列表中選定使用者,就能將擁有者轉移給他,

轉移之後,該共用項目就會直接移動到所選使用者的雲端硬碟中,而自己的雲端硬碟列表只會剩下一個捷徑檔案,連結到對方的資料夾。

但實測後發現,「擁有者」只能在同機構內互相轉移,也就是一般 Google 帳號可以將擁有者轉移給其他一般 Google 帳號,但無法轉移給 G Suite(Google Workspace)中的帳號,反之亦然。

 

建立副本

以上兩種方便的方法都無法使用,只能繼續嘗試這個更複雜的方式了。

只要和特定帳號共用項目,給最基本的「檢視」權限,被共用的帳號再前往「與我共用」的頁面中,找到共用項目,

接著在檔案上點右鍵選擇「建立副本」,就能在自己的雲端硬碟新增同一份檔案。

但這個功能的缺點除了沒辦法選擇副本建立的位置之外(預設就直接放在雲端硬碟根目錄),副本檔案的名稱還會被加上後綴「XXX 的副本」,而且「資料夾」沒辦法建立副本,

總和以上缺點,再看看我雲端資料夾內數以萬計的資料夾和檔案,最終我還是決定不採用這個方案。

 

Google 內建內容轉移功能

到這裡為止已經把雲端硬碟內能用的方法都試過一遍了,遺憾還是沒能找出最佳解,最後才發現 Google 帳號內原來有內建轉移功能 [1]

不過這個功能目前只有支援 G Suite 教育版(Workspace for Education)的帳號轉出,一般 Google 帳號或是 G Suite 帳號都無法使用,

在教育版帳號中點開 Google 右上角大頭貼選單,選擇「管理你的 Google 帳戶」,再找到「轉移您的內容」點擊「開始轉移」就能進入轉移環節。

只要按照頁面內容填寫要轉移的帳號目的地並回填驗證碼,接著就能選擇要轉移的內容,目前支援轉移「雲端硬碟」和「Gmail」內容,

因為 Gmail 裡的信件我已經設定用 POP3 匯入到其他帳號了,所以這邊我就只有選擇轉移雲端硬碟的內容。

 

實測後發現這功能的確是十分方便,整個轉移過程不用任何額外操作,完全自動化,所有檔案和資料夾都會完全按照原有的結構來轉移,

不過轉移期間會看到雲端硬碟中「近期存取」和「與我共用」這兩個區塊的內容不斷快速變動,似乎就是透過自動建立資料夾、共用檔案再建立副本,然後修改檔案名稱的方式進行的,

轉移後的檔案名稱會和原始檔案的相同,但「上次修改日期」會變成轉移當下的日期,且原始雲端硬碟的檔案皆會保留。

 

不過整個過程似乎還是沒有那麼順利,中途遇到了一個滿大的問題是轉移的過程會受到「750GB」流量的限制 [2]

也就是雖然轉移的程序一直在進行中,但當轉移目標的帳號達到了 750GB 上傳流量限制後,檔案就不會再增加,並且最後會收到轉移失敗的通知,

除了必須要等到整個轉移過程結束,實際耗時會依據檔案多寡而有所不同,我這些檔案第一批跑完就超過 12 個小時,

並且還要等到目標帳號的流量限制解除,通常是要 24 小時後,才能再次重新啟動一次轉移程序,

不過如果原本雲端硬碟使用的空間就小於 750GB,基本上就不會有這個困擾,轉移完成後檢查一下應該就沒事了。

 

不過這樣就會衍生出一個問題,如果這時再重新啟動轉移時,很可能會就轉移到重覆的內容,然後又受到 750GB 限制,

因為每次啟動轉移程序時,目標帳號都會建立一個以「帳號 轉移時間」為格式命名的新資料夾來放置當次所有轉移內容,

再加上每次檔案並不會按照順序轉移,因此除非一條條項目做檢查,不然很難得知已經轉移的內容有哪些,

所以我就要先把已經轉移的檔案,在原始的雲端硬碟中手動刪除,再重新啟動轉移,然後重複做這動作 4 次。

 

這點就真的還滿擾民的,尤其是要達到 750GB 大小的檔案數量應該也不算少了,要這樣逐條檢查真的很花時間,所以這時候前端功夫就能派上場了,

因為 Google 雲端硬碟內的搜尋功能也支援條件式搜尋 [3],所以只要把已轉移的檔案名稱整理成搜尋條件,直接把原始雲端硬碟上的檔案篩選出來,就能一鍵刪除了。

至於要怎麼一鍵將檔案列表整理成搜尋條件呢?

就拿其中一個影片備份資料夾來舉例,這個資料夾裡面有上千支影片檔案,如果要手動比對刪除大概要弄到天荒地老,

這時只要在目的地帳號,也就是已經完成檔案轉移的資料夾中按 F12(Windows)或 ⌥ + ⌘ + I(macOS)打開 Chrome 的開發人員工具,切換至「Console」並貼上以下程式碼後按 Enter 執行:

[...document.querySelectorAll('.Zz99o:last-child .KL4NAf')].map(el => '"' + el.innerText + '"').join('|')

註 1:進入資料夾時,請先將檔案列表向下捲動至底,載入所有檔案後再執行程式碼才會抓到完整列表

註 2:此程式碼可能因雲端硬碟版本更新而失效

 

接著就會出現一大串以引號 " 包覆檔案名稱並用垂直條 | 串聯的紅色字串列表,

這串值其實就是完全比對檔案名稱,再用或(OR)條件相連,這邊的 OR 也能用 | 符號代替,

這時只要在該字串上按右鍵,選擇「Copy string contents」就能將內容複製起來:

 

接著只要在原始雲端硬碟中,開啟搜尋視窗,選擇要搜尋的檔案位置後,在「包含字詞」內貼上剛剛複製的內容,然後按下「搜尋」,

接著就能篩選出剛剛複製的已轉移檔案列表了,這時候只要全選檔案後,就能一鍵刪除啦!

若搜尋時遇到「伺服器發生錯誤,請稍後再試」的訊息,表示搜尋字串的長度過長,只要把字串拆成多段來搜尋就行了,我自己是拆成每次搜尋的字串長度維持在 2,000 字左右(檔名含中文的話大概就要減少到 300 字左右)。

例如「"A.txt"|"B.txt"|"C.txt"|"D.txt"」可以拆成「"A.txt"|"B.txt"」和「"C.txt"|"D.txt"」來搜尋,注意頭尾不要帶到「|」符號就行。

 

雖然這不全然是全自動操作的方式,不過至少不用逐一比對檔案再一個一個選起來刪除(選到後面瀏覽器還會卡死),也算是省下不少時間了,

當然除了以單一資料夾的檔案列表來整理搜尋條件外,也能利用上述條件搜尋的方式把更多的檔案依條件一次列出來,

例如直接搜尋該次轉移資料夾底下的所有檔案,或是搜尋特定附檔名的檔案,不過這裡就不額外贅述了,可以參考下方提供的官方說明連結。

總之只要將已經轉移過的檔案都刪除完畢後再重新啟動轉移程序,就能避免掉浪費流量額度在同一批檔案上,

持續重覆這些動作,直到兩邊雲端硬碟使用的空間大小相同,整個轉移程序就算大功告成了。

 

[1] 將您的學校帳戶內容複製到另一個帳戶:https://support.google.com/accounts/answer/6386856

[2] 將檔案上傳至 Google 雲端硬碟:https://support.google.com/a/answer/172541

[3] 修正網頁搜尋範圍:https://support.google.com/websearch/answer/2466433

 

最後收尾

接下來只要將各次轉移資料夾內的檔案列表依序移動到根目錄,就大功告成了...嗎?

原本以為是這麼想的,結果試了才發現...Google 雲端硬碟竟然允許同一層級的資料夾下使用相同名稱的資料夾,

所以一旦將四個同樣名稱的資料夾移動到同一個目錄中,該目錄就會出現四個名稱一樣的資料夾,

這實在是非常怪異的功能,如果是直接上傳資料夾,是會自動合併相同名稱的資料夾的,但移動卻不會...

也就是如果要手動移動內容,除了第一次移動的資料夾外,後續移動的內容都要深入每個資料夾中,手動移動裡面的檔案,而不能移動整個資料夾。

 

全自動合併資料夾

因為我打死都不想手動處理這種麻煩事,所以開始尋找有沒有辦法靠一些神奇小偏方完成整個合併程序,

Google 上翻了一輪,雖然很多人問過類似問題,不過沒看到什麼完美的解答,但在其中發現了一個神奇的工具:Rclone [1]

Rclone 是一款支援近 60 種雲端儲存空間管理的工具,功能非常強大,甚至也可以在各個雲端間複製資料(但也會受到流量限制),有興趣可以自行前往官網查看說明研究,

而 Rclone 當中有一個指令「dedupe」就能完美解決上述遇到的麻煩!

「dedupe」的運作方式大致上是這個流程:

  1. 從指定資料夾(未指定則是從根目錄)開始向下尋找資料夾,下層找完再找同一層級的
  2. 同一層級中發現前面有一樣名稱的資料夾時,將資料夾的內容移動過去,並刪除這個資料夾
    • 若合併的資料夾中有相同名稱的檔案,可以選擇只留最新的、只留最舊的或是在檔案名稱後綴加入數字編號
    • 移動完後重新往下尋找資料夾
  3. 重複以上動作直到所有資料夾都尋找完畢

實際操作的方式如下,以下只列出指令步驟,相關指令說明可以參考 Rclone 官方文件。

1. 安裝 Rclone [2],這邊使用 macOS 示範,打開終端機執行指令。

> curl https://rclone.org/install.sh | sudo bash

2. 設定雲端資訊,這裡選擇 Google Drive [3]

> rclone config

# 建立新的雲端設定檔
n/r/c/s/q> n

# 自訂這個雲端的名稱,之後指令會用到
name> drive

# 選擇雲端服務
Storage> drive

# 設定 Google API 用戶端資訊,可以留空用預設,也可以按照官網說明步驟自行產生 [4]
client_id> 
client_secret> 

# 設定要請求的存取權限,稍後登入會用到
scope> drive

3. 接下來幾個設定都持續 Enter 使用預設值,直到瀏覽器打開 Google 應用程式授權頁面,選擇要合併資料夾的帳號、勾選存取範圍的選項並點擊「繼續」後即可授權。

4. 接著就能關閉頁面,然後回到終端機,一樣一直 Enter 下去,最後輸入 q 結束設定。

5. 接著就能開始使用 dedupe 指令 [5] 進行資料夾合併的程序啦!

確定已將前面所有產生的轉移資料夾中的內容都移動到根目錄後,在終端機輸入指令 rclone dedupe 雲端名稱:路徑 並執行。

雲端名稱是剛剛在設定檔指定的名稱,路徑則是在該雲端硬碟中要起始搜尋的路徑(資料夾名稱),如果要從根目錄開始搜尋則可以不填(不建議)。

這步驟建議開一個新資料夾,分批把一樣名稱的資料夾丟進去處理,合併完後再移出,才能避免大量處理中出現無法挽回的異常會欲哭無淚,

我自己是開了一個名為 dupe 的資料夾,然後根據上面設定的內容,就執行:

rclone dedupe drive:dupe --dedupe-mode newest

--dedupe-mode 是用來設定遇到相同名稱的檔案要觸發的行為,支援傳入以下值:

  • interactive:每次都詢問(預設)
  • skip:刪除一樣的檔案,且後續的檔案全部略過
  • first:保留第一個發現的檔案
  • newest:保留最新的檔案
  • oldest:保留最舊的檔案
  • largest:保留檔案大小最大的檔案
  • smallest:保留檔案大小最小的檔案
  • rename:依照順序於檔案名稱後綴加入編號
  • list:僅列出清單,不做任何事(使用上面的值如果有發現一樣名稱的檔案,也都會列出清單)

6. 照上一個步驟分批執行完成後,就完成所有轉移程序了,現在資料夾結構和檔案內容都轉移前的一模一樣,而且沒有重覆內容囉!

而因重覆而被刪除的資料夾或檔案則會移至雲端硬碟中的垃圾桶,有需要可以再從裡面拉出來,但 30 天後沒動作就會被刪除。

 

[1] Rclone:https://rclone.org

[2] Rclone Download:https://rclone.org/downloads/

[3] Google Drive:https://rclone.org/drive/

[4] Making your own client_id:https://rclone.org/drive/#making-your-own-client-id

[5] rclone dedupe:https://rclone.org/commands/rclone_dedupe/

 

還原原始雲端硬碟檔案

另外再提供一個小技巧,如果要在原本的雲端硬碟中將所有刪除掉的檔案都按照原本的放置路徑歸位,

可以先將雲端裡所有資料夾刪除,然後在垃圾桶中搜尋原本根目錄下「資料夾名稱」:

搜尋完成後,在該資料夾上點右鍵 > 還原:

這樣一來不論是分幾次刪除過,該資料夾底下所有的資料夾和檔案都會回到原先的狀態(僅限還存在垃圾桶內的項目),

如果原本根目錄下有七個資料夾,就分別還原那七個資料夾,還原之後就會發現垃圾桶都空了,而檔案也都回來囉!

 

大功告成

終於,一共四輪,總花費四天的時間把所有的檔案都轉移完畢了!

只能說這真的是需要消耗不少耐心才能完成的事,希望 Google 可以再優化這整個檔案轉移的程序,

要嘛就拿掉轉移時的流量限制、要嘛就讓用戶可以自己先選擇要轉移的資料夾好分批進行,

不然只是要移動個檔案還要這麼大費周章,用盡各種工具和方法,真的相當不親民阿。

想隨時追蹤最新資訊?歡迎使用 E-mail 訂閱最新文章 »

您或許會感興趣的文章

隨機推薦

共有 0 則迴響

暫時沒有迴響,歡迎您率先發表!

發表迴響

*
*