hgot07 Hotspot Blog

主に無線LANや認証連携などの技術についてまとめるブログです。ネコは見る専。

LinuxでGoogle Driveをマウントする (google-drive-ocamlfuse編)

Google Driveは、移動先でいじるファイルを入れておくのに便利なのですが、職場のUNIXサーバからコマンドでファイル操作ができないのが不便でした。

ネットの海で探してみたら、google-drive-ocamlfuseというものが見つかりました。ところが、これはDebian/Ubuntu用らしく、自分が日常的に使っているSolarisopenSUSEでは使えないという、残念な結果に。

仕方がないので、最小構成のUbuntuを用意して、マウントだけ試してみたのが今回のトピックです。google-drive-ocamlfuseについて解説したウェブサイトは幾つもあるのですが、Ubuntuのデスクトップ環境が前提だったり、Googleの認証のやり方がよく分からなかったりしたので、今回は準最速を目指してみました

サクサク行きます。

 

やりたいこと・やりたくないこと

  • UNIXのコマンドでGoogle Driveにファイルを出し入れしたい。要するに、ファイルシステムとしてマウントできたら嬉しい。
  • Ubuntu用の計算機を別途用意したくはない。管理コストを下げたい。
  • Ubuntuはできるだけ小さな構成のVMにして、デスクトップ周りの重厚なパッケージはなるべく入れたくない。

少し迷った末、openSUSE上のVirtualBoxUbuntu Server 22.04.3 LTSのVMを動かすことにしました。

 

準備

VirtualBox上に、Ubuntu Server 22.04.3 LTSをminimizedでインストールしました。minimizedにはvimすら入っていないので、必要なら手動でインストールします。

Ubuntu Server (minimized)のインストール

Ubuntu Server (minimized)のインストール

google-drive-ocamlfuseについて、以下のサイトを参考にしました。先人に感謝。

qiita.com

tech.nosuz.jp

作業手順

2023/9/10時点で、以下の操作でサクッと google-drive-ocamlfuse がインストールできました。

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

試しに google-drive-ocamlfuse を起動してみると……、何やらエラーが_('、3」∠)_

# google-drive-ocamlfuse
/bin/sh: 1: xdg-open: not found
/bin/sh: 1: firefox: not found
/bin/sh: 1: google-chrome: not found
/bin/sh: 1: chromium-browser: not found
/bin/sh: 1: open: not found
Cannot retrieve auth tokens.
Failure("Error opening URL: 略 )

xdg-openがないというエラー

xdg-openがないというエラー

xdg-open とウェブブラウザが必要らしいので、あまり考えない()で、さくさくとインストールします。Ubuntu ServerをEnglishでインストールしたので、日本語フォントもついでにインストールしておきます。日本語フォントがないと、ブラウザで日本語が化けます。

# apt install xdg-utils
# apt install firefox
# apt install fonts-noto

あと、Google Driveの認証の際にブラウザを使うので、X11が使えるように MobaXterm などのX11が使える環境からログインしなおしておきます

気を取り直して、もう一回! ありゃ?

firefoxの起動に失敗するみたいです。

# firefox
MoTTY X11 proxy: Unsupported authorisation protocol
Error: cannot open display: localhost:10.0

Firefoxの起動失敗

Firefoxの起動失敗

原因が分かるまでかなり苦労したのですが、解決方法はこれだけでした。この一行を実行します。なお、これ以降は root ではなく一般ユーザで操作すべきですね。Google Driveにログインするので。

$ export XAUTHORITY=$HOME/.Xauthority

 

ブラウザがきちんと立ち上がるようになったら、以下を実行してみます。

$ mkdir gdrive
$ google-drive-ocamlfuse gdrive

Googleにログイン」の画面が出てくるので、ログイン操作を進めていきます。

Googleにログイン

Googleにログイン

gdfuseにアクセスを許可

gdfuseにアクセスを許可

あれ、もう一回何かが出ますね。使用するアカウントを選んで Allow で進みます。

使用アカウントの選択

使用アカウントの選択

少し待って、Access token retrievd correctly. の表示が出たら、Google Drive がマウントされているはずです。

試しに touch gdrive/z.txt を実行してみると、少し間があってから、ブラウザの方にぴょこんとファイルが現れました。成功です!ヽ(・∀・)ノ

Google Driveのマウントの様子

Google Driveのマウントの様子

アンマウントするには、こうします。

$ fusermount -u gdrive

マウントもアンマウントも、絶対パスで指定した方が無難でしょう。

 

おわりに

この方式では、ファイル操作のたびにGoogle Driveの操作待ちが発生します。Windows上での使い勝手とはほど遠いものになります。

実用のためには、ローカルのファイルシステム上にキャッシュを置いて、同期処理をバックグラウンドで動かすのがよさそうです。(でも双方向の同期って怖いですよね)

 

おまけ (VMの容量)

おまけ (VMの容量)

 

おしまい