サーバのバックアップファイルをGoogle Driveに保存する方法について調べました。
gdcp を使って転送できたので、記録を残しておきます。
Contents
gdcp
gdcp(Google Drive cp)は強力で高速なGoogle Driveへのファイル転送を行うコマンドラインツールです。
使い方はLinux/Unixサーバのscpに似ています。
大容量のファイル転送に対応しており、MD5 checksumの確認や再帰的フォルダのアップロード/ダウンロードをサポートしています。
gdcpのインストール
必要ライブラリをpipで新ストールします。
$ pip install pydrive
$ pip install backoff
任意のディレクトリにソースコードをダウンロードしてユーザのパスにコピーします。
$ git clone https://github.com/ctberthiaume/gdcp.git
$ cp gdcp/gdcp ~/bin
※この例ではユーザディレクトリの~/binにパスが通っています。
セットアップ
インストール後、最初にgdcpを実行した時次のように表示されます。
- Visit https://console.developers.google.com/ - Create a new project and select it - Under 'APIs' make sure the 'Drive API' is turned on - Under 'Credentials' create a new OAuth client ID Choose 'Installed -> Other' for application type - Click 'Download JSON' to download the secrets file - Copy the secrets file to /home/hoge/.gdcp/client_secrets.json
指示に従ってセットアップを実行します。
1. https://console.developers.google.com/にアクセスしてプロジェクトを作成します。
2. ライブラリからDrive APIを選択し有効にします。
3. 認証情報から「認証情報の作成」 > 「OAuthクライアント ID」を選択し、クライアントIDを生成します。
※「その他 のクライアント ID」を選択します。
4. ダウンロードボタンをクリックしてJSONファイルをダウンロードします。
5. ダウンロードしたJSONファイルをユーザディレクトリの.gdcpディレクトリにclient_secrets.jsonとして保存します。
6. もう一度gdcpを実行すると次のように表示されるので、表示されたURLにアクセスします。
Go to the following link in your browser: () https://accounts.google.com/o/oauth2/auth?redirect_uri=.... ()
7. ブラウザ上で「許可」をクリックすると認証コードが表示されるのでコンソールに入力します。
Authentication successful. と表示されれば認証成功です。
Enter verification code: Authentication successful. usage: gdcp [-h] {version,list,download,upload,transfer} ... gdcp: error: too few arguments
Google Driveへのファイル転送
ファイルの転送は転送先/転送元のフォルダIDを指定します。
フォルダIDはGoogle Driveにブラウザで任意のフォルダにアクセスした時のURLを確認します。
Google DriveのURL:
https://drive.google.com/drive/folders/xxx...
URLがこのようなら、xxx…の部分がフォルダIDです。
ファイルリストの取得
指定のフォルダに含まれるファイルのリストを取得するコマンド
gdcp list -i フォルダID
Google Driveからダウンロード
指定のフォルダに含まれる任意のファイルを1つダウンロードする場合のコマンド
gdcp download -i フォルダID ファイル名
指定のフォルダに含まれるファイルを全てダウンロードする場合のコマンド
ファイル名のところに .(ドット)を指定すると指定のフォルダ内のファイルを全てダウンロードします。
gdcp download -i フォルダID .
Google Driveへのアップロード
ファイルをアップロードするコマンド
ファイルパスにディレクトリを指定するとフォルダ配下のファイルが再帰的にアップロードされます。
gdcp upload -p フォルダID ファイルパス