Google Driveは、移動先でいじるファイルを入れておくのに便利なのですが、職場のUNIXサーバからコマンドでファイル操作ができないのが不便でした。
ネットの海で探してみたら、google-drive-ocamlfuseというものが見つかりました。ところが、これはDebian/Ubuntu用らしく、自分が日常的に使っているSolarisやopenSUSEでは使えないという、残念な結果に。
仕方がないので、最小構成のUbuntuを用意して、マウントだけ試してみたのが今回のトピックです。google-drive-ocamlfuseについて解説したウェブサイトは幾つもあるのですが、Ubuntuのデスクトップ環境が前提だったり、Googleの認証のやり方がよく分からなかったりしたので、今回は準最速を目指してみました。
サクサク行きます。
やりたいこと・やりたくないこと
- UNIXのコマンドでGoogle Driveにファイルを出し入れしたい。要するに、ファイルシステムとしてマウントできたら嬉しい。
- Ubuntu用の計算機を別途用意したくはない。管理コストを下げたい。
- Ubuntuはできるだけ小さな構成のVMにして、デスクトップ周りの重厚なパッケージはなるべく入れたくない。
少し迷った末、openSUSE上のVirtualBoxでUbuntu Server 22.04.3 LTSのVMを動かすことにしました。
準備
VirtualBox上に、Ubuntu Server 22.04.3 LTSをminimizedでインストールしました。minimizedにはvimすら入っていないので、必要なら手動でインストールします。
google-drive-ocamlfuseについて、以下のサイトを参考にしました。先人に感謝。
作業手順
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 とウェブブラウザが必要らしいので、あまり考えない()で、さくさくとインストールします。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
原因が分かるまでかなり苦労したのですが、解決方法はこれだけでした。この一行を実行します。なお、これ以降は root ではなく一般ユーザで操作すべきですね。Google Driveにログインするので。
$ export XAUTHORITY=$HOME/.Xauthority
ブラウザがきちんと立ち上がるようになったら、以下を実行してみます。
$ mkdir gdrive
$ google-drive-ocamlfuse gdrive
「Googleにログイン」の画面が出てくるので、ログイン操作を進めていきます。
あれ、もう一回何かが出ますね。使用するアカウントを選んで Allow で進みます。
少し待って、Access token retrievd correctly. の表示が出たら、Google Drive がマウントされているはずです。
試しに touch gdrive/z.txt を実行してみると、少し間があってから、ブラウザの方にぴょこんとファイルが現れました。成功です!ヽ(・∀・)ノ
アンマウントするには、こうします。
$ fusermount -u gdrive
マウントもアンマウントも、絶対パスで指定した方が無難でしょう。
おわりに
この方式では、ファイル操作のたびにGoogle Driveの操作待ちが発生します。Windows上での使い勝手とはほど遠いものになります。
実用のためには、ローカルのファイルシステム上にキャッシュを置いて、同期処理をバックグラウンドで動かすのがよさそうです。(でも双方向の同期って怖いですよね)
おしまい