gdriveの使い方
概要
- google driveの非公式cliクライアント
- google drive自体がAPI制限のためmountして利用するとかには向いていないので、gdriveのようなソフトウェアが向いている
- google drive上のファイル名の他に、fileIdと呼ばれるハッシュ値が割り振られており(むしろハッシュ値の方が本体)、それを指定してダウンロード、アップデート等を行う
インストール
debian, ubuntu
$ go get github.com/prasmussen/gdrive
osx
$ brew install gdrive
ログイン方法
- tokenでログイン
- 未ログインの状態で
gdrive list
を入力するとtoken要求のコードが出力される - tokenは短い時間間隔でexpireするので長期的な運用には向かない
- 未ログインの状態で
- service accountでログイン
- GCPのサービスアカウントを発行する
- 対象のファイル or ディレクトリをサービスアカウントに共有する
- gdriveの引数にservice accountを追加することで実行可能
サービスアカウントを利用したデータの取得
$ gdrive --service-account <gcp-service-account-credential>.json list
使用例
直近の数十件を表示
$ gdrive list
1TNH7bTL1HRAF9_lgfOe1N0nAwDx1PQBX anybase to decimal bin 2.1 KB 2021-05-14 13:50:37
10qoHpJS2AvUjbtnxoAhnzWls7ZjufOTS フィボナッチ数列 bin 1.1 KB 2021-12-29 22:38:25
1g6gz06g9bFCsMyW3dRSAamSKd4SdI43n 二分木 bin 1.9 KB 2021-12-29 15:52:30
1PkW2E7V-zAXrVZOKqwJBfp9fz0iOMiD5 マージソート bin 2.4 KB 2021-12-29 15:05:25
...
ファイル名で検索する
例えば、ファイル名で.py
を含むものを検索する
$ gdrive list --query "name contains '.py'"
特定の親フォルダを持つファイルの検索
親フォルダのfileIdがわかっている状態で次のクエリを実行
$ gdrive list --query " '<fildId>' in parents"
<fildId>
- 親フォルダのfileId
ファイルをダウンロードする
検索等で、予めfileIdと呼ばれるハッシュ値を得ておく
$ gdrive download <fileId>
ファイルを削除する
$ gdrive delete <fileId>
ファイルをアップロードする
$ gdrive upload <filename>
ディレクトリを作成
$ gdrive mkdir <dirname>
1nsnUAwr8wH26HwN-YaDs99y_CpXYUO99 # ディレクトリのfileIdが得られる
親フォルダを指定してフォルダをアップロード
$ gdrive upload -r <directory> -p <fildId>
<fileId>
- 親フォルダのfileId
<directory>
- アップロードしたいディレクトリ
ファイルを標準入出力からアップロードする
$ cat <filename> | gdrive upload - <upload-name>