我有一台机器,我希望在其上安装多个远程服务器以集中访问它们。对于基于 Linux 的远程系统,我使用 SSHFS,它工作得很好。但对于 Windows 系统或没有 SSH 的系统,它们都安装了某种形式的 HTTP 服务器来共享文件(因此它们都启用了目录浏览)。
我可以将 HTTP 服务器安装为本地文件系统(如 SSHFS),以便可以将所有这些远程服务器安装在本地并以统一的方式呈现吗?
答案1
您可以使用以下方法执行此操作网络DAV。这是大多数 Web 服务器(包括 IIS 和 Apache)都支持的 HTTP 扩展。 WebDAV 可以通过 FUSE 模块安装在 Linux 中davfs2
。
答案2
纯 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)或带有 DAV 的 FTP 或 Apache,因此您应该能够执行与 Unix 计算机上相同的操作。
答案3
上面已经讨论的主要问题是:目录/树列表。
虽然你的问题很老了,而且你可能已经这样做了,但我最近编写了一个熔断文件系统,它完全可以满足你的需要,只要你编写一个小脚本来给它 URL 的“树”。
它在那里:https://gitlab.com/BylonAkila/astreamfs
您有一个针对提供商 1fichier 的示例脚本,您可以将其改编为您自己的个人服务器。该脚本所做的只是准备 astreamfs 的所有参数,以便挂载将在正确的位置显示所有文件和文件夹。它使用(不名)著名的“网络抓取”技术来实现这一点,即读取 HTML 页面并从中提取相关部分。
显然,与 NFS 或 SSHFS 等常规挂载相比,仍然存在两个主要限制:
- http 服务器需要处理“范围”(大多数服务器都可以做到)
- 它是只读的!