Linuxでの gdrive の使い方

2020年現在、認証時にGoogleにブロックされることや、ツールのメンテナンスが終了していることもあり、rclone等の別のツールをお薦めします。

前提

使用した環境は次の通り。

gdriveツールのセットアップ

ダウンロード

最新版のバイナリのダウンロード先はこちらをご覧ください。
(トップページに表示しているmasterブランチのREADME.mdには“Download gdrive from one of the links below”とありますが、該当するダウンロードリンクがありません。リリースタグのREADME.mdにはダウンロードリンクがあるので、上記の「ダウンロード先リンク」は最新のリリースタグ2.1.0にあるREADME.mdを示しています。)

上記のgithhubのページから対応するプログラムをダウンロードします。
rpmやtar.gz等のパッケージ化されたものではなく、実行プログラム1つだけのダウンロードです。
私の環境は64ビットOSなので、gdrive-linux-x64がダウンロード対象です。



gdrive-linux-x64のリンクをコピーし、次のようにLinuxのcurlからダウンロードします。
いくつかリダイレクトされるので”-L”オプションを、ダウンロードファイルをgdriveとするために”-o”オプションを使います。

アクセストークンの取得

2021年5月現在、アクセストークンを取得しようとするとgoogleにブロックされてしまいます。
詳細は参考をご覧ください。

gdriveの任意のコマンドを実行します。
google認証をおこなうためのURLが表示されるので、そのURLを任意のブラウザで開きます。

ブラウザにgoogle認証画面が表示されるので認証を行います。
認証に成功すると、gdriveにアクセス許可を与えるかの画面が表示されるので「許可」をクリックします。
コードが表示されるので、これをコピーします。

上記でコピーしたコードを、先ほどの「Enter verification code:」にペーストします。
問題なければ、gdrive listの実行結果が表示されます。

なお、認証情報をクリアしたい場合、既定ではホームディレクトリの.gdriveフォルダをリネームまたは削除してください。この際、google側の情報も併せて削除することをお勧めします。
(2020年6月現在、Googleアカウントのページのメニューで[セキュリティ]->[サードパーティによるアクセスを管理]->[GDrive]->「アクセス権を削除」を選択してアクセス権を削除可。)


gdriveの検証

googleドライブとgdriveコマンド

  • フォルダやファイルのパスではなく、IDを使って操作対象のフォルダ・ファイルを指定する。フォルダやファイルのIDは、”gdrive list”の実行結果で確認可。フォルダの場合は、google driveのURLの最後に記載されている値で確認可。
  • 検索する場合、既定ではすべてのフォルダが検索対象になる。フォルダを限定したい場合は、後述のように検索条件に”in parents”を追加する。
  • ゴミ箱にある削除されたファイルも検索対象になる。対象外にしたい場合は、後述のように検索条件に”trashed = false”を追加する。
  • ファイルの種類はMIMEで定義されている。例えば、フォルダの場合は”application/vnd.google-apps.folder”である。サポートされるMIMEタイプはgoogleのリファレンス(Supported MIME Types)に定義されている。

ファイル・フォルダリスト取得: gdrive list

フォルダ・ファイルの一覧を取得する場合、gdriveのlistを使用します。
指定可能な検索条件の定義はgoogleの検索パラメータリファレンスを参照のこと。
同じく、ソート条件に関してはgoogle driveのapiリファレンスを参照のこと。

検索条件とソート条件の指定
ファイル名に”test”を含む、ゴミ箱のファイルは対象外、を条件にファイルを検索する。
検索結果は、ファイル名(既定の昇順)、更新日時(降順)でソートする。

フォルダのリストを取得
google drive上の全てのフォルダのリストを取得する。

フォルダ内のファイルのリストを取得
特定フォルダ内のファイルのリストを取得する。

ファイルアップロード: gdrive upload

所定のフォルダのIDを指定して、そのフォルダにdummy.datファイルをアップロードする。


シェルスクリプトによる検証

バックアップファイルをgoogle driveにアップロードするシェルスクリプト。
10世代までバックアップファイルを保持する。
実行する前に”chmod a+x backup2gd.sh”をして、実行可状態にしてください。

実行結果は次の通り。
11世代目ができたタイミングで、そのバックアップファイルを削除している。

参考)アクセストークン取得時のエラー

  • 2021年5月現在、新規にアクセストークンの取得(gdriveから提示された認証URLをブラウザで開く)を行うと、次のようにgoogleにブロックされてしまいます。
    このアプリはブロックされます
    このアプリが、Google アカウントのプライベートな情報にアクセスしようとしました。
    アカウントを安全に保つため、Google によりこのアクセスはブロックされました。
  • どうやら、gdriveは「googleが認可しないアプリ」になってしまったようです。
    この問題の回避策として「Google Cloud Platformにて、開発用のGoogle Drive APIを有効化して認証情報を設定する。」「発行されたOAuth2用のクライアントIDやシークレットをgdriveのソースに埋め込んでソースをリビルドする。」が必要とのことです。

  • 過去にアクセストークンを取得している場合、問題なくgdriveを使用できます。
    gdriveが正常に動作する環境があるなら、ホームディレクトリの.gdriveフォルダを新環境にコピーすることで、この問題を回避できるかもしれません。(当方では未確認)
  • 正直、ここまでするなら別のツールをお薦めします。
    (gdriveはシンプルで使いやすくお薦めだったのですが残念です…)
    NDW

    目次 1 概要2 使用方法2.1 インストールと接続先登録2.2 コマンドの使用方法3 参考3.1 接続先としてGoog…