最近自分の中で「最強の打ち合わせのお供」という評価をしているchromebook。
タブレット機らしい軽快さで、developer tool付きのデスクトップブラウザが使え、必要ならMS Office(android版)も使えて、さらにはLinuxまで載っているから各種コマンドまで使えちゃう。
なんて便利なコなんだろう!
で、実用的に使うとなると、個人的にdropboxの使用は必須です。
chromebookでdropboxを使うにあたっては、WEBアプリを使ったり、androidアプリを使ったり、さらにはローカルストレージにように使えるFile System for Dropboxなんかを使ったりするのですが、どの方法もLinux環境(Crostini)では使用できません。
Crostiniにインストールしたエディタ(Visual Studio Codeを使っています)で編集したいときなど、dropboxにアクセスできないのは困ります。
Linux版の公式クライントを使えるのかもしれないですが、クラウド上のファイルをローカルにダウンロードされるのはストレージの少ないchromebookには非現実的。
そこでクラウドにファイルを置いたままファイルシステムにマウントできるdbxfsを使ってみました。
dbxfsのインストール
dbxfsはFUSE(Filesystem in Userspace)を使ってPythonで実装されています。そのインストールにはPythonのパッケージ管理システムのpipを使います。
ということで、それらが入っていなければインストール
$ sudo apt install fuse libfuse2 python3-pip
環境が整ったらdbxfs本体をインストール
$ pip3 install dbxfs
通常ならdbxfsは~/.local/binにインストールされるはず。
マウントポイント(この例では~/Dropbox)を作っておいてからdbxfsを起動します
$ mkdir ~/Dropbox $ ~/.local/bin/dbxfs ~/Dropbox We need an access token. Perform the following steps: 1. Go to https://www.dropbox.com/oauth2/authorize?response_type=code&client_id=******** 2. Click "Allow" (you may have to log in first) 3. Copy the authorization code. Enter authorization code (Ctrl-C to quit):
こんなメッセージが帰ってくるので、表示されたURLにブラウザでアクセスして認証を済ませてコードをゲット。
そのコードを入力して次に進みます。
We're all connected. Do you want to save your credentials for future runs? [Y/n]
認証情報を保存するかなのでここはY
Please enter password for encrypted keyring:
keyringのためのパスワードを聞かれます。ログインアカウントのパスワードを入力
Would you like to help us improve dbxfs by providing anonymous error reports? [Y/n] Do you want "/home/******/Dropbox" to be the default mount point? [Y/n]
改善のためにエラーレポートを送るか、なのでY(望まないならnでもいいはず)
指定したマウントポイントをデフォルトにするか、なのでY
以上で無事dropboxがマウントできました。
df -h で確認してみます
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/vdb 6.8G 3.3G 3.2G 52% / none 492K 0 492K 0% /dev devtmpfs 1.4G 0 1.4G 0% /dev/tty /dev/vdb 6.8G 3.3G 3.2G 52% /dev/wl0 tmpfs 100K 0 100K 0% /dev/lxd run 1.4G 24K 1.4G 1% /dev/.host_ip /dev/root 153M 150M 280K 100% /dev/.ssh/sshd_config 9p 1.9G 572K 1.9G 1% /mnt/chromeos tmpfs 100K 0 100K 0% /dev/.lxd-mounts tmpfs 1.4G 0 1.4G 0% /dev/shm tmpfs 1.4G 8.2M 1.4G 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup tmpfs 273M 20K 273M 1% /run/user/1000 dbxfs 2.1T 44G 2.0T 3% /home/******/Dropbox
ちゃんと2TBのディスクとしてマウントされてる!
認証情報を保存してデフォルトのマウントポイントも決めていれば、次回以降は引数なしの dbxfs コマンドだけでマウントできます。
なおアンマウントは下記の通り
$ fusermount -u ~/Dropbox
linux環境起動時に自動でマウントしたい
上記で十分使えるようになったんですが、できればlinux環境起動時に自動でマウントしたい。
自動マウントをする上での問題はkeyringのパスワードを聞かれることなので、これをexpectで力技で回避してみました。
まずexpectが入っていなければインストール
$ sudo apt install expect
expectで自動マウント用スクリプトを書きます。dbxfsコマンドと同じ場所に置いてみました。
~/.local/bin/dbxfsmount.exp
#!/usr/bin/expect set PASSWORD "パスワード" spawn env LANG=C /home/******/.local/bin/dbxfs expect { "keyring:" { send "${PASSWORD}\n" } } expect { "\\\$" { exit 0 } }
パスワードのところにログインパスワードを記入します。
共有サーバでもないんでスクリプトに平文で書くことをお許しを・・・
spawnの行にはdbxfsコマンドの場所を自分の環境に合わせて書いてください。
書けたら実行権限を与えておきます。
$ chmod 700 ~/.local/bin/dbxfsmount.exp
ここまで用意できたら起動時にこのスクリプトを実行するようにします。
.bash_profileを以下のようにしました(PATHの部分は環境に合わせて)
export PATH=$PATH:/home/*****/.local/bin (dbxfsmount.exp > /dev/null 2>&1 &) if [ -f ~/.bashrc ] ; then . ~/.bashrc fi
これでこれからはCrostiniを立ち上げると自動でdropboxがマウントされています。