Raspberry Pi Raspbian でGoogle Drive / Cloud Storageを使う(マウントしてドライブとして使う)
Google Driveをバックアップ先に使ったり、過去ログ置場にするのに使いたいな。
できればマウントして、cpとかmvとかrsyncとかでデータ入れられれば、と思っている人や情報を探している人もいると思ったのでまとめてみました。
1.CLIでGoogle Drive/Google Cloud Storageへアクセスを行うgsutilをインストールする
$ sudo apt-get install gcc libssl-dev python-dev python-setuptools python-pip python3-dev python3-setuptools python3-pip libffi-dev fuse fuse-utils $ sudo pip install --upgrade setuptools $ sudo pip install gsutil $ sudo pip install --upgrade gsutil
2.CLIでGoogle Drive/Google Cloud Storageをドライブとしてマウントするgdrivefsをインストールする
※前提条件としてgsutilが使えないとだめなので、gsutilを入れてから実行する
ツールのレポジトリはこちら
https://github.com/dsoprea/GDriveFS
※pipでインストールできるのでマニュアル読みに行くぐらいしか…
$ sudo pip install --upgrade google-api-python-client $ sudo pip install gdrivefs $ sudo mkdir -p /mnt/gdrivefs
AuthCodeの取得
$ sudo gdfstool auth -u
以下のようにURLにアクセスして許可を取れみたいに言われるので、あらかじめブラウザで使いたいgoogle drive/storageにアクセスした状態にしてください
To authorize FUSE to use your Google Drive account, visit the following URL to produce an authorization code: https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=xxxxxxxxxxxxxxxx.apps.googleusercontent.com&access_type=offline
指定されたURLにアクセスすると、ドライブへの書き込み許可を求められるので、承認するとAUTH CODEが発行されます
AuthCodeをホームの.gdfs.credsへ以下のコマンドで記録します、全ユーザで使う場合は/var/cache/.gdfs.credsがおすすめ
$ sudo gdfstool auth -a ~/.gdfs.creds "(取得したコード)" Authorization code recorded.
※なお、.gdfs.credsの名称変えれば複数アカウントもOKです
手動マウント
$ sudo gdfs -o allow_other ~/.gdfs.creds /mnt/gdrivefs
確認
$ df -h ファイルシステム サイズ 使用 残り 使用% マウント位置 gdfs(/root/.gdfs.creds) 15G 0 15G 0% /mnt/gdrivefs
こんな感じになってればOK
fstabへの記述の場合
$ sudo sudo ln -s `which gdfs` /sbin/mount.gdfs
して、mountコマンドとして使えるようにしてから
$ sudo vi /etc/fstab #以下追記 ~/.gdfs.creds /mnt/gdrivefs gdfs allow_other 0 0
動作テスト
$ sudo mount /mnt/gdrivefs
gdfstoolを使う場合
$ sudo gdfstool mount ~/.gdfs.creds /mnt/gdrivefs
チューニング
#ラージセクタにシステムが対応している場合(4k block -> 64K block )
$ sudo gdfs -o big_writes ~/.gdfs.creds /mnt/gdrivefs
これで、/mnt/gdrivefsに一般ユーザなら16GBの、Worksユーザなら1TBのオンラインストレージがマウントされます
マウントしてしまえば、一般のコマンドからアクセスができますね(APIの一日あたりの上限があるので使い方には注意ですが…)