18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RcloneでクラウドストレージをLinuxに自動マウント

Last updated at Posted at 2022-02-11

概要

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の設定ファイルを追加する

/etc/systemd/system/path-to-mount.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/*)しても問題なさそう。ただし消す際は自己責任で。
    • 設定ファイル名は自動マウントしたいパスのフルパス名にする必要がある模様。例えば/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)によるエラーが出た経験はないが、可能性として記載する。

おわりに

ファイルアクセス速度的にも問題なければ、これですごく便利に使えそう!

18
17
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?