📝

リモートマシンのファイルをローカルにあるかのように編集するnつの方法

2021/07/13に公開

初めに

「リモートマシンにあるファイルを、ローカルマシンのツールで編集したい」という場面は多々あると思います。
本記事では、そんな場面で使える手段・ツールを、インデックス的に紹介したいと思います。
なお、ここでの「リモートマシン」は「ネットワーク的に接続されており、ほとんどの場合物理的に触れることができないマシン」、「ローカルマシン」は「手元のマシン」といった意味で用いています。
インデックス的な紹介なので、詳細は参考記事を見るなり、検索して頂ければと思います。

なお、本記事はLinux、macOSユーザ向けの内容で、Windowsに関する記載はありません。ご了承ください。

SSHを用いる方法

Visual Sudio Codeの拡張機能を使う

前提条件:

  • リモートマシンにSSH接続できる
  • ローカルマシンでVisual Studio Code(VSCode)を使っている

上記の条件を満たす場合、VSCodeの「Remote - SSH」拡張、または「Remote Development」拡張を使うと、リモートマシン上のファイル一覧を見たり、編集したりできるようになります。
ただし、リモートマシンの操作はVSCode内に限られます。

参考:

SSHFSを使ってマウントする

前提条件:

  • リモートマシンにSSH接続できる
  • ローカルマシンがLinux、またはmacOS
  • ローカルマシンがLinuxの場合: FUSEでマウントする権限がある
  • ローカルマシンがmacOSの場合: ツールをインストールする権限がある

上記の条件を満たす場合、SSHFSを使うことで、リモートマシンの指定ディレクトリをローカルマシンにマウントすることができます。
FUSE(Filesystem in Userspace、Wikipedia)を使用しているため、FUSE経由でマウントするための権限が必要です。
権限さえあれば、一般ユーザ権限でマウントが可能です。

macOSの場合、macFUSEを用いることで、同様のことを行うことができそうです。(未検証)

Mutagenを使ってリアルタイムに同期する

前提条件:

  • リモートマシンにSSH接続できる
  • ローカルマシンがLinux、またはmacOS
  • ローカルマシン、リモートマシンの双方に十分なストレージ容量がある

上記の条件を満たす場合、Mutagenを使うことで、リモートマシンとローカルマシンの指定ディレクトリをほぼリアルタイムに同期することができます。
「マウント」ではなく「同期」のため、ファイルの実体がリモートマシン、ローカルマシンの双方に存在する状態となります。そのため、双方に十分なストレージ容量が必要です。

また、大量のファイルの同期を行う場合、MutagenエージェントのCPU使用率が高まることがあるので注意が必要です。

SSHを用いない方法

NFS経由でマウントする

前提条件:

  • リモートマシンがNFSで共有ディレクトリを公開している
  • ローカルマシンがLinux、またはmacOS

上記の条件を満たす場合、NFS(Network File System、Wikipedia)経由でリモートマシンの共有ディレクトリをローカルマシンにマウントすることができます。
ファイルシステムとしてマウントするため、アプリケーションを問わずにファイルの読み書きが可能です。

SMB/CIFS経由でマウントする

前提条件:

  • リモートマシンがSMB/CIFSで共有ディレクトリを公開している
  • ローカルマシンがLinux、またはmacOS

上記の条件を満たす場合、SMB(Server Message Block、Wikipedia)、またはCIFS(Common Internet File System)経由でリモートマシンの共有ディレクトリをローカルマシンにマウントすることができます。
ファイルシステムとしてマウントするため、アプリケーションを問わずにファイルの読み書きが可能です。

参考:

WebDAV経由でマウントする

前提条件:

  • リモートマシンがWebDAVで共有ディレクトリを公開している
  • ローカルマシンがLinux、またはmacOS

上記の条件を満たす場合、WebDAV(Web-based Distributed Authoring and Versioning、Wikipedia)経由でリモートマシンの共有ディレクトリをローカルマシンにマウントすることができます。
ファイルシステムとしてマウントするため、アプリケーションを問わずにファイルの読み書きが可能です。

参考:

最後に

あなたの環境で使えそうな手段・ツールは見つかったでしょうか?
他にも良い方法があれば、コメントなどで教えて頂けると幸いです。

Discussion