#はじめに
pythonでWebサービスを作るのに、デプロイ先としてpythonanywhereを使っているが、ここで、DBなどのデータのバックアップ先にGoogleドライブを使用したいという希望があり、そのための手順を記載する。
#gdriveのインストール
pythonanywhereにはWebインタフェースのBash consoleがついているので、ここからgdrive(Google DriveのCLI版クラアント)をインストールする。
インストールといっても実行プログラムをダウンロードするだけ。Linux 64bit環境向けのもの(gdrive-linux-x64)をダウンロードする。ダウンロードしたら実行権を付け、パスの通っているフォルダに移動する。
~ $ curl -JLO https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download
~ $ chmod +x gdrive-linux-x64
~ $ mv gdrive-linux-x64 ~/.local/bin
使いやすいようにエイリアスを設定する。
alias gdrive=gdrive-linux-x64
#googleアカウントへのログイン (アクセストークンの取得)
gdriveでは初回のコマンドの実行時にGoogle認証を行ってトークンを取得するため、とりあえずgdrive list
を実行する。
~ $ gdrive list
Authentication needed
Go to the following url in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&...(中略)...state=state
Enter verification code:
指定されたURLにブラウザでアクセスするとGoogleのログイン画面が表示され、ログインに成功するとgdriveがGoogleアカウントへのアクセスをリクエストしている旨の画面が表示されるため「許可」をクリックする。
すると、コードが表示されるのでこれをコピーしEnter verification code:
にペーストする。
Enter verification code: XXXXXX(表示されたコード)
これでアクセストークンが取得でき、ログインしたアカウントのGoogleドライブをgdriveコマンドで操作することができる。
アクセストークンは~/.gdrive/token_v2.json
に保存されている。ログイン(Google認証)をやり直すにはこのファイルを削除する。
#アップロード
Googleドライブにアップロードするためにはgdrive upload
にファイル名を指定して実行する。
~ $ gdrive upload myfile
Uploading myfile
Uploaded 1zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz at 101.0 B/s, total 101.0 B
Googleドライブにアップロードされたファイルを確認するためにはgdrive list
を実行する。
~ $ gdrive list
Id Name Type Size Created
1zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz myfile bin 101.0 B 2018-11-18 12:00:00
#ダウンロード
Googleドライブからダウンロードするためには、gdrive download
にId
を指定して実行する。
指定するのはファイル名ではなくId
であることに注意。Id
はgdrive list
実行時に一番左の列に表示されている。
~ $ gdrive download 1zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Downloading myfile -> myfile
Downloaded 1zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz at 101.0 B/s, total 101.0 B
#おわりに
pythonanywhereから、Googleドライブを使ってファイルのバックアップができるようになった。
また、これにより手元のPCとpythonanywhereとのファイルのやりとりもGoogleドライブ経由でできるようになる。手元のPCとのファイルのやりとり自体はpythonanywhereに付いているWebインタフェースのファイルマネージャでもできるが、一つの代替手段として。
#おまけ
URLやコード、ファイルのIDなどは、直接キーボードから入力するよりも、コピー&ペーストで入力する方が楽だが、pythonanywhereのコンソールでもコピー&ペーストが使用できる。
コピーは指定範囲をドラッグしてCtrl+C
(MacではCommand+C
)、ペーストはCtrl+V
(MacではCommand+V
)でできる。右クリックでメニューが出てきたり、ペーストができたりはしないので念のため。
#参考資料