概要
Rcloneは、DropboxやOneDriveなどのクラウドストレージをコマンドラインで管理できるツールで、Linux,Windows,Macで利用可能。一旦マウントすると、様々なクラウドストレージにローカルに作ったディレクトリと同じような感覚でアクセスできるので便利!(最初に知ったときは、「待ってましたこのツール!!」と一人盛り上がったw)
今回はLinuxマシンを対象に、Rcloneを使ってクラウドストレージを自動マウントする方法を紹介する。
動作確認環境
- OS : Ubuntu 20.04
- クラウドストレージ
- Google Drive
- Dropbox
- Microsoft OneDrive
事前準備
具体的な内容は、以下に示した公式サイトのリンクを参照。ここには補足内容のみ記載。
- インストール
-
各ストレージの認証設定
- 「Configure」セクションに、対応しているクラウドストレージ一覧がある。そこから対象ストレージへのリンクをクリックして、書かれている手順にしたがって設定すればOK。
- 設定内容はデフォルトだと、
~/.config/rclone/rclone.conf
に格納される模様
- マウント確認
-
storage_name
は「各ストレージの認証設定」のname>
で設定した名前を記載。マウント元のパスを指定したい場合は、:
の後にパスを入れればOK -
/path/to/mount
はマウント先のパス名
-
$ rclone mount storage_name: /path/to/mount &
$ ls /path/to/mount
(マウント先のファイルが出てくるはず)
上記は確認用なので、一旦マウント解除
$ umount /path/to/mount
自動マウント設定
上記で動作確認したマウントを、Linuxマシン起動と同時に自動でできるようにしたい。
記載する内容は、公式サイトのRclone as Unix mount helperに書かれている内容からの抜粋なので、ご興味ある方はこちらも参照されたし。
マウントタイプに「rclone」を追加
cifsとかnfsであれば、必要パッケージを入れればmount -t cifs ...
等でマウント時にtype指定できるはず。rcloneも同様にmount -t rclone ...
でマウントできるようにしたい。そのために以下コマンドで、/sbin/
配下にシンボリックリンクを作る。
$ sudo ln -s /usr/bin/rclone /sbin/mount.rclone
念のため、-t rclone
でマウントできるか確認してみる。
(mountコマンドはrootユーザしか使えないらしいので注意)
$ sudo mount storage_name: /path/to/mount \
-t rclone \
-o vfs_cache_mode=writes,config=[rclone.confファイルへのパス]
(エラーが出なければOK)
$ sudo ls /path/to/mount
(マウント先のファイルが出てくるはず)
$ sudo umount /path/to/mount
マウントの設定ファイル追加
/etc/systemd/system/
に、拡張子が.mountの設定ファイルを追加する
[Unit]
After=network-online.target
[Mount]
Type=rclone
What=storage_name:
Where=/path/to/mount
Options=rw,allow_other,args2env,vfs-cache-mode=writes,config=[rclone.confファイルへのパス],cache-dir=/var/cache/rclone
- 補足
-
キャッシュ用ディレクトリがない場合は、併せて作っておく。
$ sudo mkdir /var/cache/rclone
- ↑22/08/13追記
-
/var/cache/rclone
しばらく使っていると容量が肥大化するので注意が必要。 - 容量削減のためのコマンドが現時点でわかっていないが、手動削除(
sudo rm -rf /var/cache/rclone/*
)しても問題なさそう。ただし消す際は自己責任で。
-
- ↑22/08/13追記
-
設定ファイル名は自動マウントしたいパスのフルパス名にする必要がある模様。例えば
/mnt/aaaa/bbbb
にがマウント先であればmnt-aaaa-bbbb.mount
のようにディレクトリのスラッシュ(/)をハイフン(-)に置き換えたファイル名にすればいいはず。(systemdのmount設定の公式ドキュメントを要確認ですね…) -
上記設定のままだとマウント後に所有者がrootになってしまう。他のユーザを所有者にしたい場合は、
Options=
にuid=[ユーザID],gid=[グループID]
のパラメータを追加すればいいみたい。
-
自動マウント(automount)設定
公式ドキュメントによると、「以下2つのいずれかの方法でsystemdのautomount設定をしてね」と書いてある。(「optionally」と書いてあるので必須ではないと思ったのだが、これをやらないと自動マウントに成功しなかった…)
- (1)
/etc/systemd/system/
に.automount
の拡張子で設定ファイルを作る - (2)
/etc/fstab
に設定を追加する
筆者はsystemdの設定にあまり習熟してないので、(2)の/etc/fstab
でやってみた。
以下が/etc/fstab
への追加例。書いている内容は今まで出てきたので特筆すべき点は無し。
storage_name: /path/to/mount rclone rw,noauto,nofail,_netdev,x-systemd.automount,args2env,vfs_cache_mode=writes,config=[rclone.confファイルへのパス],cache_dir=/var/cache/rclone 0 0
設定追加したら、PCを再起動systemctlで対象サービスを開始。
(もともと「PC再起動」と書いていたが、おそらく再起動不要)
$ sudo systemctl start path-to-mount.mount
その後、マウントしたはずのパスを確認してみる。
$ (sudo) ls -l /path/to/mount
(見事にアクセスできたら成功!)
トラブルシューティング?(22/05/22 追記)
下記のように上手くアクセス出来ない現象が生じた場合、
$ ls -l /path/to/mount
ls: cannot access '/path/to/mount/': No such device
$ ls -l /path/to/
ls: cannot access '/path/to/mount': No such device
total 8
drwxr-xr-x 3 root root 4096 May 19 14:02 ./
drwxr-xr-x 3 root root 4096 May 19 14:02 ../
d????????? ? ? ? ? ? mount/
以下の可能性を疑って再確認してみると、解決する可能性あり。
- (1)
/etc/systemd/system/
に作った.mount
ファイルの設定ミス - (2) 自動マウントの設定ファイル(
/etc/fstab
等)の記載ミス - (3) マウントするディレクトリの権限設定
筆者が実際に直面したのは(1)で、.mount
ファイルのWhat以降の名前がrclone.conf
で定義されている名前と一致していなかった。(2)(3)によるエラーが出た経験はないが、可能性として記載する。
おわりに
ファイルアクセス速度的にも問題なければ、これですごく便利に使えそう!