• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

gdrive

date: 2022-01-03 excerpt: gdriveの使い方

tag: gdrivegoogle appsgoogle drive


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'"
  • 検索APIドキュメント

特定の親フォルダを持つファイルの検索

親フォルダの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>

参考

  • gdrive@github.com


gdrivegoogle appsgoogle drive Share Tweet