将HTTP Server挂载为文件系统


9

我有一台机器,希望在该机器上安装多个远程服务器以集中访问它们。对于基于远程Linux的系统,我使用的是SSHFS,效果很好。但是对于Windows系统或没有SSH的系统,它们都安装了某种形式的HTTP服务器来共享文件(因此它们都启用了目录浏览)。

是否可以将HTTP服务器作为SSHFS之类的本地文件系统挂载,以便可以将所有这些远程服务器本地挂载并以统一的方式显示?


1
外面有人可能写了一个工具来模拟这种情况,但我对此表示怀疑。HTTP服务器通常显示信息的方式对此不利。
goldilocks 2013年

如上。同样,HTTP浏览仅仅是-它浏览和读取,不支持上传。我会考虑共享要通过SMB / CIFS或FTP挂载的文件夹。或者,查看WebDAV,我确定您可以找到IIS实现。
Dave C

2
@goldilocks某人早在10年前就已将其作为标准。
约旦

活到老,学到老。:)
goldilocks 2013年

1
@DaveC好吧,目录浏览通常不支持上传,但是我没有提到我想要只读访问。尽管HTTP本身支持通过PUT方法上传。
jwbensley 2013年

Answers:


8

您可以使用WebDAV进行此操作。这是大多数Web服务器(包括IIS和Apache)支持的HTTP扩展。WebDAV可以通过davfs2FUSE模块安装在linux中。


1
davfs2...或fusedavavfsgvfs(Gnome / Nautilus)至少。
斯特凡Chazelas

5

普通HTTP的问题在于它仅用于检索内容。没有文件夹或文件列表的概念。

某些Web服务器允许您通过生成带有指向目录文件链接的漂亮HTML页面来浏览目录结构。至少,诸如此类lftp的东西能够解析生成这些索引的某些常见格式,并给您留下的印象是它是一种文件传输协议,但实际上并非如此,而且我不知道任何融合文件系统可以解析索引的方式lftp

DAV是一个扩展,仅此而已,而jordanm的答案已经涵盖了它。

但是请注意,如果您不需要列出目录,avfs至少可以让您通过文件系统访问网页。

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

现在还请注意,您也可以sshd在Windows机器上(通过cygwin)安装FTP或Apache或带有DAV的Apache,因此您应该能够执行与Unix机器相同的操作。


HTTP URL的路径部分是否不被认为与根目录下的目录结构相对应?同样,如果您请求以目录而不是文件结尾的URL,则许多Web服务器都提供文件列表。然后将这两个概念都转换为将HTTP服务器安装为文件系统的模型。现在,就发布对这种安装的更改而言,我不确定,但是也许某些Web服务器可以配置为像FTP那样做
两栖机器人2013年

@两栖动物,是的,您所说的a file listing是我所说的a generated HTML page with links to file。它仍然需要解析,并且这些页面的格式没有标准。仅在Apache上,就有几个模块可以生成可以通过许多不同方式调整的索引。因此,没有万无一失的解决方案。正如我所说的lftp那样,它试图解析许多列表页面
斯特凡Chazelas

1

上面已经介绍的主要问题是:目录/树列表。

尽管您的问题已经很老了,您可能会做其他事情,但是我最近编写了一个融合文件系统,该文件系统可以完全满足您的需求,只要您编写一个小脚本即可为它提供URL的“树”。

它在那里:https : //gitlab.com/BylonAkila/astreamfs

您有一个提供程序1fichier的示例脚本,您可以将其改编到自己的个人服务器。该脚本所做的只是为astreamfs准备所有参数,以便挂载将在正确的位置显示所有文件和文件夹。它使用(著名的)“网络抓取”技术来完成此工作,也就是读取HTML页面并从中提取相关部分。

与常规挂载(例如NFS或SSHFS)相比,显然还有两个主要限制:

  • http服务器需要处理“范围”(大多数服务器可以做到)
  • 它是只读的!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.