Смонтировать HTTP-сервер как файловую систему


9

У меня есть машина, на которой я хочу смонтировать несколько удаленных серверов для централизованного доступа к ним. Для удаленных систем на базе Linux я использую SSHFS, которая работает нормально. Но для систем Windows или систем без SSH все они имеют установленный HTTP-сервер для обмена файлами (так что у всех них включен просмотр каталогов).

Могу ли я смонтировать HTTP-сервер в качестве локальной файловой системы, например, SSHFS, чтобы все эти удаленные серверы были смонтированы локально и представлены единообразно?


1
Кто-то мог бы написать инструмент для имитации этого, но я сомневаюсь в этом. То, как HTTP-серверы обычно представляют информацию, не очень благоприятно для нее.
Златовласка

Как указано выше. Также HTTP-просмотр - это просто просмотр и чтение, загрузка не поддерживается. Я хотел бы взглянуть на общий доступ к папкам для подключения через SMB / CIFS или FTP. В качестве альтернативы посмотрите на WebDAV, и я уверен, что вы можете найти реализацию IIS.
Дейв С

2
@goldilocks, кто-то там сделал это стандартом более 10 лет назад.
Иордания

Живи и учись. :)
Златовласка

1
@DaveC Ну, как правило, просмотр каталогов не поддерживает загрузку, однако я не упомянул, что мне нужен доступ только для чтения. Хотя HTTP сам поддерживает загрузку с помощью метода PUT.
Jwbensley

Ответы:


8

Вы можете сделать это с помощью WebDAV . Это расширение HTTP, которое поддерживается большинством веб-серверов, включая IIS и Apache. WebDAV может быть установлен в Linux через davfs2модуль FUSE.


1
davfs2... или fusedavили avfsили gvfs(Гном / Наутилус) по крайней мере.
Стефан Шазелас

5

Проблема с простым HTTP заключается в том, что он предназначен только для извлечения контента. Там нет понятия папки или списка файлов.

Некоторые веб-серверы позволяют просматривать структуры каталогов, генерируя красивые HTML-страницы со ссылками на файлы для каталогов. И, по крайней мере, такие вещи lftpспособны анализировать некоторые распространенные форматы, в которых создаются эти индексы, и создают у вас впечатление, что это протокол передачи файлов, но на самом деле это не так, и я не знаю ни одной файловой системы с плавким предохранителем, которая могла бы разбирает индексы так, как это lftpделает.

DAV - это расширение, которое просто делает это и уже охвачено ответом Джорданма.

Но учтите, что если вам не нужно перечислять каталоги, avfsпо крайней мере, вы можете получить доступ к веб-страницам через файловую систему.

$ 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.


не будет ли часть пути URL-адреса HTTP соответствовать структуре каталогов под корнем? Кроме того, многие веб-серверы предлагают список файлов, если вы запрашиваете URL, заканчивающийся каталогом, а не файлом. и тогда обе эти две концепции могут быть преобразованы в эту модель монтирования HTTP-сервера в качестве файловой системы. Теперь, что касается публикации изменений в таком монтировании, я не уверен в этом, но, возможно, некоторые веб-серверы могли бы быть настроены так, чтобы это было похоже на FTP
amphibient

@amphibient, да, то, что ты называешь "а", file listingэто то, что я называю "а" generated HTML page with links to file. Это все еще нужно проанализировать, и нет никакого стандарта на формат этих страниц. Только на Apache есть несколько модулей, генерирующих эти индексы, которые можно настраивать разными способами. Так что нет надежного решения. Как я уже сказал, посмотрите, lftpчто пытается проанализировать многие из этих страниц списка .
Стефан Шазелас

1

основная проблема, о которой уже говорилось выше: каталог / дерево.

Хотя ваш вопрос довольно старый и вы могли бы поступить иначе, я недавно написал файловую систему fuse, которая делает именно то, что вам нужно, при условии, что вы напишете небольшой скрипт, который даст ему «дерево» URL-адресов.

Это там: https://gitlab.com/BylonAkila/astreamfs

У вас есть пример скрипта для провайдера 1fichier, который вы можете адаптировать к своему личному серверу. Сценарий только подготавливает все аргументы для astreamfs, так что монтирование покажет все ваши файлы и папки в нужном месте. Это делается с помощью (в) известной техники «веб-скребка», то есть чтения HTML-страниц и извлечения соответствующих частей из этого.

Очевидно, что по-прежнему существует два основных условия по сравнению с обычными монтируемыми системами, такими как NFS или SSHFS:

  • Http-сервер должен обрабатывать «диапазоны» (большинство серверов могут это делать)
  • Это только для чтения!
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.