🌟

Rcloneを用いたファイルシステムのマウント方法

2023/08/09に公開

Rcloneはクラウドサービスなどのファイルとディレクトリを同期するためのコマンドラインツールである。
公式ページではS3などのクラウドサービスをローカルにマウントできることがメリットとして記載されているが、sshfsのようにssh接続したリモート先をwindowsにネットワークドライブとしてマウントすることもできる。


なぜRcloneなのか

同じ事をしたいなら前述のsshfsでも良いのではと思うが、sshfsは既に開発が終了しているため、メンテナンスが行われず、いずれ使えなくなる可能性がある。
そのため代替ツールとなりうるRcloneに着目した。
sshfsについては以下を参照。
https://zenn.dev/kabec_dev/articles/b88fba46be871a


インストール方法

rclone/releasesから最新版のrcloneをダウンロード。実行ファイル形式で配布されているのでインストールの必要はなし。

また、依存パッケージとしてWinFspが必要なので(参考)、こちらもインストール。


マウント方法

詳細なコマンドについてはこちらを参照

まずは事前準備としてリモート先の情報を記載したrclone.confを作成する。
rclone configで対話的にリモートの情報を設定してもよいが、手入力したほうが早い。
以下のようにrclone.confに必要情報を入力する。

rclone.conf
[ホスト名]
type = sftp
user = リモートユーザー名
host = ホスト
port = ポート番号
key_file = 鍵ファイルのパス # 鍵認証を設定している場合

公式ドキュメントによると~/.config/rclone/rclone.confがデフォルトで読み込まれる仕様となっているが、上手く読み込んでくれないので(Windowsで実行しているのが原因?)rclone.exeを格納しているパスに格納する。

更にWindows側でssh-agentが起動していない場合は別途しておく必要がある。

  1. サービスアプリを開く(サービスで検索するとヒットする)
  2. サービスリストのOpenSSH Authentication Agentをクリック
  3. スタートアップの種類を自動に変更

上記を設定後、以下のコマンドでマウント

rclone mount ホスト名: Z: --dir-cache-time 1m
  • --dir-cache-timeはリモートの更新を取得する頻度
    リモートの更新を1分毎に行うように設定
  • 読み込むrclone.confを明示的に指定したい場合は--configオプションを使う
    rclone --config 設定ファイルのパス mount ホスト名: Z: --dir-cache-time 1m
    
  • コマンド実行中のターミナルを閉じるとマウントが自動的に解除されてしまうので注意。
  • sshコマンドと同様に-vオプションで接続時のデバッグ情報を出力することができる。
    rclone -v mount ホスト名: Z: --dir-cache-time 1m
    
    -vvvオプションもあるので接続が上手くできない場合は-vvvオプションを付与してどこで
    エラーが発生しているか確認すること。

注意点

上記のマウントコマンド時に、--daemonオプションを使うことで本来ならバックグラウンドで起動を維持することが可能だが、Windowsでは現状非対応...。 この点に関してはsshfsのほうが優れている。

mountコマンド以外にも様々なコマンドが提供されているので一読しておくとよい。
rclone --helpコマンドで確認可能。


sshfsとの違い

sshfsから移行したいところだが、以下の通り少なくともWindowsでは
まだ完全互換というわけにはいかない状態だった。

メリット

  • 開発が終了していない
  • ドキュメントが豊富
  • 設定ファイルにリモート先の情報を記述できるのでマウントが楽

デメリット

  • Windowsではバックグラウンドでマウントを維持することができない
    コマンド実行中のターミナルを起動し続ける必要がある。

A.I.

  • EC2でもUbuntu環境はマウントできたが、Amazon Linux2環境はマウントできなかった。
    sftpサーバーがプリインストールされていない??
  • S3などもマウントできるようなので方法がわかれば手順を記載予定

references

Discussion