web-dev-qa-db-ja.com

HTTPサーバーをファイルシステムとしてマウント

複数のリモートサーバーをマウントして、それらすべてに一元的にアクセスしたいマシンがあります。リモートのLinuxベースのシステムでは、正常に機能するSSHFSを使用しています。しかし、Windowsシステム、またはSSHのないシステムの場合、すべてのサーバーに何らかの形式のHTTPサーバーがインストールされ、ファイルを共有します(したがって、すべてのディレクトリの参照が有効になっています)。

SSHFSのようなローカルファイルシステムとしてHTTPサーバーをマウントできるので、これらすべてのリモートサーバーをローカルにマウントし、統一された方法で提示できますか?

9
jwbensley

WebDAV を使用してこれを行うことができます。これは、IISおよびApacheを含む)ほとんどのWebサーバーでサポートされているHTTP拡張です。WebDAVは、davfs2 Fuseモジュールを介してLinuxにマウントできます。

8
jordanm

プレーンHTTPの問題は、コンテンツを取得するためだけのものです。フォルダやファイルのリストという概念はありません。

一部のWebサーバーでは、ディレクトリのファイルへのリンクを含むNice HTMLページを生成することにより、ディレクトリ構造を参照できます。そして、少なくともlftpのようなものは、これらのインデックスが生成される一般的な形式のいくつかを解析し、それがファイル転送プロトコルであるという印象を与えることができますが、実際にはそうではありません。 lftpと同じ方法でインデックスを解析できるFuseファイルシステム。

DAVはそれを行うだけの拡張機能であり、すでにヨルダンの回答でカバーされています。

ただし、ディレクトリを一覧表示する必要がない場合は、avfsを使用すると、ファイルシステム経由でWebページにアクセスできます。

$ mkdir AVFS
$ avfsd AVFS
$ grep -w Reputation 'AVFS/#http:unix.stackexchange.com|users|12583|javano'
 <span class="count">731</span> Reputation

sshd(cygwin経由)またはFTPまたはApacheをDAVとともにWindowsマシンにもインストールできることにも注意してください。これにより、Unixマシンで行うのと同じことができるはずです。

5

上記ですでに取り上げた主な問題は、ディレクトリ/ツリーのリストです。

あなたの質問はかなり古く、あなたはそうしなかったかもしれませんが、私は最近、URLの「ツリー」を与えるための小さなスクリプトを書くという条件で、必要なことを正確に実行するFuseファイルシステムを書きました。

そこにあります: https://gitlab.com/BylonAkila/astreamfs

プロバイダー1fichierのサンプルスクリプトがあり、これを自分の個人サーバーに適合させることができます。スクリプトが行うことは、astreamfsのすべての引数を準備することだけなので、マウントはすべてのファイルとフォルダーを正しい場所に表示します。これは、有名な「ウェブスクレイピング」技術、別名HTMLページを読み取り、そこから関連する部分を抽出することで行われます。

NFSやSSHFSのような通常のマウントと比較して、明らかに2つの主要な制約があります。

  • Httpサーバーは「範囲」を処理する必要があります(ほとんどのサーバーはそれを行うことができます)
  • 読み取り専用です!
1
Bylon