gdrive3 : Google Drive CLI Client
小蛙照著之前 gdirve 讓你在 Linux 文字介面也能好好使用 Google Drive 來設定新機器使用 gdrive,結果發現在 gdrive about 要進行授權時一直顯示被 block 無法使用,查了之後才發現 gdrive 已經更新到 gdrive3 了,舊的方法已經沒辦法正常使用,這篇文章記錄如何使用 gdrive3: Google Drive CLI Client,透過文字命令列使用的 Google Drive 工具。
gdrive3 要設定的部分比較多也比較麻煩,不像前一版只要下載回來,gdrive about授權完成就可以了,跟著小蛙來一步一步設定吧。
下載 gdrive 套件
點進去之後找到 the release section,小蛙寫這篇文章的時候最新版本是 3.9.1,下載對應自己作業系統的版本
在 shell 環境中下,下載 gdrive、解壓縮,並移動到 /usr/sbin/ 讓他可以全域執行
wget https://github.com/glotlabs/gdrive/releases/download/3.9.1/gdrive_linux-x64.tar.gz tar -xzvf gdrive_linux-x64.tar.gz mv ./gdrive /usr/sbin/
設定 Google 帳號授權
這版本的 Google 授權跟上一版比較起來真的超級麻煩,github 主頁上也有完整且詳細授權教學 Create Google API credentials in 50 easy steps,有 50 個步驟看起來真的是超級麻煩 … 不過點進去看的話就會發現其實不到 50 個步驟啦!大約只有 28 個 (…. 還是很多啊!!!)
建立 Google Cloud 專案
首先進入到 Google Clound 控制台,第一次使用的話點擊左上角「選取專案」,然後「新增專案」,如果原本就有專案存在的話,使用既有的專案也可以。
輸入可以辨識的專案名稱,點擊建立,建立完成後右上角會跳出通知,點擊選取專案進入專案頁面
啟用 Google Drive API
在上方搜尋欄輸入「drive api」,點擊第一個搜尋結果「Google Drive API」,點擊「啟用」來使用 Google Drive API
設定 OAuth 同意畫面
成功啟用 Google Drive API 後,點擊左側選單「憑證」,點擊「設定同意畫面」
點擊「開始」設定 Google 驗證平台,輸入應用程式名稱及使用者支援電子郵件
目標對象選擇「外部」,填入聯絡資訊,同意條款後點擊「建立」
新增資料存取權
點擊「資料存取權」->「新增或移除範圍」
篩選條件輸入「Google Drive API」,下方範圍選擇 …/auth/drive 及 …/auth/drive.metadata.readonly 兩個,選完後點擊最下方「更新」
接著畫面會顯示剛剛選擇的那兩個,點擊 Save 儲存
新增目標對象
接著點擊「目標對象」->「Add users」
輸入要使用 gdrive3 的使用者
建立 Oauth 用戶端
點擊「用戶端」->「建立用戶端」,應用程式類型選擇「電腦版應用程式」,接著輸入自己可以辨認的名稱即可
建立完成,點擊「下載 JSON」可以把密鑰下載下來,要注意這邊的密碼要記起來,關閉這視窗之後就再也看不到這個密碼了,只能刪除重建一個新的喔。
發布應用程式
點擊左側「目標對象」->「發布應用程式」
確認後就完成 Google Drive API 的設定囉 ~
gdrive3 認證
這部分要依照「本機是否可以開啟瀏覽器」來區分,因為小蛙安裝在 VPS 上沒有辦法開啟瀏覽器來驗證,也不像前一版可以遠端驗證
因此這邊需要在 Windows 本機也安裝 gdrive,在本機驗證成功後,把設定檔匯出,在到 VPS 上匯入設定檔,這樣就能讓不能開瀏覽器的主機也能正常使用 gdrive,下面小蛙就示範怎麼執行這些步驟。
下載 Windows 版本的 gdrive,解壓縮後進入到目錄,接著執行gdrive account add,輸入上面取得的用戶端編號與用戶端密碼後,會得到一個連結,複製貼到瀏覽器進行認證
gdrive account add # Client ID (輸入用戶端編號) # Client secrent (輸入用戶端密碼) # 取得驗證連結 (貼到瀏覽器進行認證) # 驗證成功顯示 Logged in as [email protected]
輸入剛剛上面 Add user 中輸入的 gmail 帳號
遇到下面這個畫面沒關係,點擊顯示進階設定,點擊下方前往「GDrive3」(不安全)
兩個權限都勾選後點擊繼續
驗證成功
接著將驗證成功的檔案匯出,輸入gdrive export剛驗證成功的 gmail 帳號
把上面產生的檔案上傳到 VPS 主機上,使用gdrive account import匯入就成功囉~
gdrive3 基本使用
只要輸入gdrive就可以看到使用說明
# gdrive Usage: gdrive <COMMAND> Commands: about Print information about gdrive account Commands for managing accounts drives Commands for managing drives files Commands for managing files permissions Commands for managing file permissions version Print version information help Print this message or the help of the given subcommand(s) Options: -h, --help Print help information
輸入gdrive files mkdir 資料夾名稱可建立資料夾,小蛙要用來放備份的,因此輸入gdrive files mkdir backup,建立一個名稱為 backup 的資料夾,接著會回傳一個 directory id,之後存取這個資料夾都是認這個 directory id 而不是資料夾名稱喔。
建立資料夾
# gdrive files mkdir backup Created directory 'backup' with id: 1MuLg1nlmZwudTdW4MJqhNO1z88i9Vur2
到 Google 雲端硬碟可以看到成功建立了 backup 資料夾
上傳檔案
這一版不支援前一版可以gdrive sync upload 本機資料夾 雲端資料夾id直接同步整個本機資料夾內的檔案,只能透過以下指另一個一個上傳
gdrive files upload --parent 1MuLg1nlmZwudTdW4MJqhNO1z88i9Vur2 1.txt gdrive files upload --parent 1MuLg1nlmZwudTdW4MJqhNO1z88i9Vur2 2.txt ...
或者是批量把資料夾下的資料都上傳可透過以下指令,不過這樣會在原本要上傳的 backup 資料夾下又在建立一個 backup 資料夾 …
~/backup# gdrive files upload --parent 1MuLg1nlmZwudTdW4MJqhNO1z88i9Vur2 --recursive ./ Found 2 files in 1 directories with a total size of 70 B Creating directory 'backup' with id: 1elbAeqJGIA_h8VeKSGveWWuyVL_vZevp Uploading file 'backup/1.txt' with id: 1HuMgkjhnLwWnCkub3hwfU2WVXvC-o3IQ Uploading file 'backup/2.txt' with id: 1S76vQWzWtR1AzR-IzxDMPBh2RBzNAvOB Uploaded 2 files in 1 directories with a total size of 70 B
大概 gdrive 的教學就到這邊,如果遇到參數不知道怎麼下的時候,只要在最後面加上-h就可以看到指令教學。