読者です 読者をやめる 読者になる 読者になる

debian で google-drive-ocamlfuse を使って Google ドライブをマウントする

ファイルサーバーとして利用している debian マシンでローカルディレクトリに Google ドライブをマウントさせます。

Google ローカルガイドのレベル4になった特典として1年間 100GB の追加容量を利用できるようになったので、データをあらかたそっちにコピーしてみようと思いまして。
自分の Google ドライブは標準の 15GB に加えてセキュリティ診断のボーナスによる 2GB、ローカルガイドレベル4特典の 100GB の合計 117GB 利用できる状態です。
ローカルファイルサーバーで使っている実用量が 107GB くらいなので全部乗った上に 9GB くらいは空き容量が確保できそうです。

導入した debian のバージョンは 8.5 です。
後述しますが、google-drive-ocamlfuse では Google ドライブのアクセストークンを取得するために GUI ブラウザで認証する必要があるので、インストールしようとしているマシンに GUI 環境がない場合、他の環境で認証できるようにしなければなりません。
とりあえず途中まで debian だけで進めます。

debiangoogle-drive-ocamlfuse をインストールする

Launchpad.net の alessandro-strada にある Ubuntu 用のリポジトリをセットしてインストールします。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXX
$ sudo sh -c "echo 'deb http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu xenial main' > /etc/apt/sources.list.d/google-drive.list"
$ sudo sh -c "echo 'deb-src http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu xenial main' >> /etc/apt/sources.list.d/google-drive.list"
$ sudo apt-get update

XXXXXXXXの部分はリポジトリのページにある Signing key か Fingerprint あたりに文字列を入力してください。 エラーが出なければOK

fusegoogle-drive-ocamlfuse をインストールします。

$ sudo apt-get install google-drive-ocamlfuse fuse -y

インストールが完了したら google-drive-ocamlfuse コマンドを実行します。

$ google-drive-ocamlfuse 
/bin/sh: 1: xdg-open: not found
/bin/sh: 1: firefox: not found
/bin/sh: 1: google-chrome: not found
Cannot retrieve auth tokens.
<snip>

はい、google-drive-ocamlfuse が xdg-open か firefoxgoogle-crome を使ってアクセストークンを取得しようとしますが、このマシンには GUI 環境がセットされていないのでトークンを取得できないとエラーが出ます。
そんなわけで Ubuntu デスクトップの仮想マシンを作ってそっちで認証させます。

Ubuntu 16.04 Desktop で google-drive-ocamlfuse をインストールする

Ubuntu 16.04 Desktop でのインストールと認証は簡単で、google-drive-ocamlfuse の Wiki で方法が説明されています。

まずはリポジトリの追加からインストール。
GUI の仮想端末から操作した方がいいです。

$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt-get update
$ sudo apt-get install google-drive-ocamlfuse -y

インストールが完了したら google-drive-ocamlfuse コマンドを実行します。

$ google-drive-ocamlfuse

ブラウザが起動して認証を促されるれます。
無事認証を完了すれば準備 OK です。 仮想端末に戻り、scp を使って仮想マシンからファイルサーバーへトークンの記録されたファイルをコピーします。

$ scp ./.gdfuse/default/state 192.168.10.14:/home/zoar/.gdfuse/default/

192.168.10.14debian のファイルサーバーで使われてる IP アドレスですね。
ここまでくれば Ubuntu仮想マシンはいらなくなるのでシャットダウンして消すなりなんなりできます。

debianGoogle ドライブをマウントする

まずマウントポイントのディレクトリを作っておきます

$ mkdir ~/google-drive

google-drive-ocamlfuse コマンドでマウントします。
コマンドの最初のオプションがマウントポイントです。

$ google-drive-ocamlfuse /home/zoar/google-drive

確認してみましょう

$ df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/sda1               106G  3.0G   98G   3% /
udev                     10M     0   10M   0% /dev
<snip>
google-drive-ocamlfuse  117G  328K  117G   1% /home/zoar/google-drive

マウントできたっぽいです。
これでデータをコピーするなりできるようになると思います。

なお、アンマウントするときは fusermount コマンドを使って

$ fusermount -u /home/zoar/google-drive

とかすればアンマウントされます。

当然ですがトークンの記録されているファイル ~/.gdfuse/default/state が流出すると大変なことになるので気を付けて扱う必要があります。