📂

gdrive で CLI から google drive を操る

2024/05/24に公開

LinuxでCLIからgoogle driveを操作するための設定を行いました。
google drive CLIツール「gdrive」をインストールし、操作できるように設定します。
実行コマンドの例も最後に載せておきます。

前提条件

  • RHEL8.9 Azureインスタンス
  • gdrive 3.9.1
  • 所要時間 :30分−1時間程度

0. google API 側の設定

このページを参考にGCP側で設定を行うことで、Google DriveにAPIでアクセス出来るようになります。
上記URLが参考になるので詳細は割愛します。
(私が行ったときは9番でUser support emailDeveloper contact informationを同一メールアドレスにするとエラーが出ました。)

1. gdriveのインストール

wgetコマンドを使用して、gdriveの最新版をダウンロードします。
githubのページのAssetsから、OSに対応するURL(今回はLinux)をコピーしました。

$ wget https://github.com/glotlabs/gdrive/releases/download/3.9.1/gdrive_linux-x64.tar.gz

ダウンロードが完了したら、tarコマンドを使用してアーカイブを解凍します。

$ tar -xzf gdrive_linux-x64.tar.gz

次に、解凍されたgdriveバイナリを/usr/local/bin/ディレクトリに移動し、実行可能にします。

$ sudo mv gdrive /usr/local/bin/
$ sudo chmod +x /usr/local/bin/gdrive

これで、gdriveコマンドがシステム全体で利用可能になりました。インストールが正しく行われたことを確認するために、バージョン情報を表示します。

$ gdrive version
gdrive 3.9.1
Commit: unknown
Rust: 1.75.0
Arch: x86_64
OS: linux

2. google driveアカウントの設定

次に、google driveアカウントをgdriveに追加します。以下のコマンドを実行します。

$ gdrive account add

実行すると、クライアントIDとクライアントシークレットを求められます。これらは0. google API 側の設定 で作成したプロジェクトから取得したものを入力します。

Client ID: xxxxxx.apps.googleusercontent.com
Client secret: xxxxxxxx

その後、gdriveはブラウザで特定のURLを開くように指示します。URLを開き、指示に従ってGoogleアカウントへのアクセスを許可します。(たしか安全でないページのような表示があったはずですが、詳細をクリックして先に進みます。)

Gdrive requires permissions to manage your files on Google Drive.
Open the url in your browser and follow the instructions:
https://accounts.google.com/xxxxxxxxx

認証が完了すると、CLIに戻り、google driveへのアクセスが設定されます。

3. gdriveの基本操作

ファイルもフォルダも一意の ID で操作を行います。
gdrive のコマンドが紹介されているブログなど確認しましたが、古いものが多く、現在のバージョンでは利用できないことがあるのでお気をつけください。

# マイドライブのファイルリストを取得(デフォルト最大30個まで)
$ gdrive files list
# フォルダの中身を表示したい場合、リストの該当フォルダのIDをParent_IDとして指定する
$ gdrive files list --parent {parent_ID}
# 特定のファイルを削除
$ gdrive files delete {file_id}
# ローカルのファイルである{file_path} を google drive の {folder_id} にアップロード
$ gdrive files upload --parent {folder_id} {file_path}

まとめ

RHEL8.9上で gdrive を使用して google drive を CLI から操作する方法について説明しました。これにより、ファイルのアップロード、ダウンロード、一覧表示、削除などの操作を簡単に行うことができ、自動化に組み込むことが可能になります。

Discussion