コマンドラインでGoogle Driveを操作する(Drive編)


RaspberryのコマンドラインからGoogle Driveを操作する2番目の方法として「Drive」を紹介します。(名前が紛らわし い)
「Grive」が2015年4月21日をもって使えなくなりました。
本家である「Google Client」 の出来 が いまひとつなので、現時点ではこれが一番安定しています。

「Drive」のインストールは以下で紹介されていますが、この通りにやってもインストールできませんでした。
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=92613

そこで、私が行ったセットアップ方法を紹介します。
「Drive」は「Go language」で作られているのでまず「Go language」をインストールします。
Raspberry用の「Go language」は
sudo apt-get install golang
で一発インストールできますが、これでインストールできるのは「GO 1.0」で、
このバージョンで「Drive」をコンパイルするとエラーになります。
そこでまずは、最新の「Go language」をインストールします。

以下のページからARMv6用の最新のバイナリーをダウンロードします。
http://dave.cheney.net/unofficial-arm-tarballs
2015年4月時点の最新は「go1.4.2.linux-arm-multiarch-armv6-1.tar.gz」です。
これをダウンロードし「$HOME」の下に展開します。

$ cd $HOME
$ tar xvfz go1.4.2.linux-arm-multiarch-armv6-1.tar.gz

次に「$HOME/.profile」に以下の環境変数を定義し、再ログインします。

$ vi $HOME/.profile

#以下の3行を追加
export GOROOT=$HOME/go
export GOPATH=$HOME/GoApp → この名前でなくてもいい
export PATH=$PATH:$GOROOT/bin

再ログインするとGOコマンドが有効になります。

$ go version
go version go1.4.2 linux/arm

次に「Drive」のソースをダウンロードし、コンパイルします。
「$GOPATH/bin」の下に「drive」が作られます。

$ go get -u github.com/odeke-em/drive/cmd/drive
$ ls -l $GOPATH/bin
total 6832
-rwxr-xr-x 1 pi pi 6993608 Apr 27 19:30 drive → これがDrive本体

同期用のディレクトリを作って、googleに認証を行います。

$ mkdir $HOME/gdrive (名前は何でもいい)
$ $GOPATH/bin/drive init $HOME/gdrive
Visit this URL to get an authorization code
https://accounts.google.com/o/oauth2/auth?access_type=offline&
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Paste the authorization code:

ここでブラウザーから上記のURLを指定すると「許可のリクエスト」ページが表示されますので「認証する」を押します。
「このコードをコピーし、アプリケーションに切り替え て貼り付けてください」と表示されるのでコードをコピーしてRaspberry上にペースト。

まずはクラウド上のフォルダーが見れるかどうか確認します。

$ $GOPATH/bin/drive list $HOME/gdrive
/Test
/Raspberry

次にクラウドのフォルダーと同期します。

$ $GOPATH/bin/drive pull -no-prompt=true $HOME/gdrive
Resolving...
125801 / 125801 [==================================================] 100.00 % 1s
$ ls -l $HOME/gdrive
total 8
drwxr-xr-x 2 pi pi 4096 Apr 23 20:07 Raspberry
drwxr-xr-x 2 pi pi 4096 Apr 23 20:07 Test

クラウド上のフォルダーと同じ名前のディレクトリがRaspberryに作成されます。
ローカル側にファイルをコピーしてクラウドにファイルをアップロードします。

$ cp off.jpg $HOME/gdrive/Raspberry
$ cp on.jpg $HOME/gdrive/Test
$ $GOPATH/bin/drive push -no-prompt=true $HOME/gdrive
Resolving...
125801 / 125801 [==================================================] 100.00 % 2s

クラウド上の2つのフォルダーに「off.jpg」と「on.jpg」ができます。
きちんとアップロード先フォルダーの指定もできるので便利です。

「Drive」の使い方はこちらで紹介され ています。
クラウド上のファイルをゴミ箱に移したり、クラウド上のゴミ箱を空にしたり、
ダウンロードしたファイルの中身を別のコマンドにPIPEで繋いだり、面白い使い方ができそうです。
試しに、以下のコマンド一発でクラウド上のゴミ箱が空になりました。(素晴らしい!!)

$ $GOPATH/bin/drive emptytrash -no-prompt=true $HOME/gdrive
-- owner       71.07KB          0B5crueAx3-ifOVNVa1AwclNTRDg            2015-04-23 11:11:05 +0000 UTC   /My Drive/on.jpg
-- owner       51.78KB          0B5crueAx3-ifMVVNWU5kN2RoZ0E            2015-04-23 11:10:49 +0000 UTC   /My Drive/off.jpg

続く...