Какой легкий HTTP или FTP-сервер подходит для простой передачи файлов? [закрыто]


25

Этот вопрос является продолжением Как скопировать файлы на ненадежный компьютер? Поскольку для этой цели, похоже, нет специального приложения, я сейчас ищу альтернативный вариант для http или ftp-сервера. В частности, я ищу легкий сервер, который можно использовать для простой однократной передачи файлов между компьютерами. Под этим я подразумеваю, что он должен действовать как замена rsync / scp для передачи файлов с одного компьютера на другой, а не как классический веб-сервер. Кроме того, он должен:

  • запустить в пространстве пользователя
  • быть тривиальным в настройке (т.е. без файла конфигурации, все выполнимо через командную строку)
  • поддержка имени пользователя / пароля
  • поддержка продолжения загрузок
  • поддержка экспорта отдельных файлов вместо целых каталогов

Ответ dbr на предыдущий вопрос близок, но, конечно, это просто специальный взлом, в котором отсутствуют многие полезные функции.


Просто используйте Apache2 это быстрее, чем Python SimpleHTTPServer примерно в 4 раза.
o0omycomputero0o

Ответы:


31

Я часто использую этот быстрый взлом Python, чтобы обслуживать каталог по HTTP.

python -m SimpleHTTPServer &

будет обслуживать текущий каталог.

По умолчанию он привязывается к порту 8000.

Чтобы выбрать другой порт:

python -m SimpleHTTPServer 9090 &

Если вы выберете порт ниже 1024 для * nix, вам могут потребоваться права root, иначе bind () завершится с ошибкой.


3
Действительно не уверен, почему этот вопрос был закрыт. Вопрос и ответ были очень полезны.
merlin2011

8
Или эквивалент Python 3:python3 -m http.server
Eliran Malka

6

Кто-то на ТАК указал мне на Гав . Минимальный httpd в python с интерфейсом, оптимизированным как раз для таких целей. На самом деле он не соответствует всем вашим требованиям, но, позволяя вам указать, сколько раз он будет подключаться, он позволяет вам использовать «Готовы ли вы? Я сейчас запускаю сервер». подход к обеспечению передачи.

Чтобы разрешить загрузку одного (1) соединения через thisfileпорт 8080, просто запустите

$ woof thisfile

Это так просто.

Вот довольно злоупотребленный оригинал . Если тебе это нравится, иди голосуй за Нейта.


Также отлично
подходит

3

Вы можете попробовать webfs, который доступен через репозиторий Ubuntu:

Webfs (он же webfsd) - простой HTTP-сервер для чисто статического контента. Вы можете использовать его, например, для обслуживания содержимого FTP-сервера через HTTP. Его также можно использовать для быстрого экспорта некоторых файлов, запустив сервер httpd за несколько секунд без предварительного редактирования файлов конфигурации.

Другой вариант - HFS (Http File Server) , приложение для Windows, которое хорошо работает через Wine .

HFS (Http File Server) - это программа для обмена файлами, которая позволяет отправлять и получать файлы. Вы можете ограничить это совместное использование всего несколькими друзьями или быть открытым для всего мира. HFS отличается от классического обмена файлами, потому что нет сети. [...] Поскольку это на самом деле веб-сервер, ваши друзья могут загружать файлы, как если бы они загружали с веб-сайта с помощью веб-браузера.


1
Что случилось с голосами против здесь? ОП попросил простые http-серверы, и люди предложили их. Так в чем проблема.
dmckee

HFS также отлично работает для «загрузки» (в случае, если вам нужен файл от пользователя, который не может или не хочет самостоятельно устанавливать сервер)
golimar

1

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

Могу ли я порекомендовать вам установить FTP-сервер?

Это позволит вам в значительной степени делать все, что вам нужно, и, как правило, его очень легко настроить, вы даже можете настроить порт на использование 80, если это требуется.


1
Конечно, FTP тоже подойдет, но большинство известных мне FTP-серверов не совсем легковесны и имеют много лишнего багажа, что делает их непригодными для простой однократной передачи файлов (т. Е. Требуются права root, учетные записи на компьютере для доступа по паролю). негибкая обработка каталогов и т. д.). С Pure-FTPd я даже не мог понять, как запустить его как пользователь без полномочий root.
Грамбель

1
Согласовано. Это называется протокол передачи файлов по причине. HTTP, с другой стороны, является протоколом передачи гипертекста. Скорее всего, вы не заинтересованы в гипертексте прямо сейчас.
Ли Б

1
FTP - не глупая идея, но есть ли у вас предложение о том, что такое простое болото, которое легко настроить по запросу ОП?
dmckee

1
Преимущество http заключается в том, что на каждом компьютере общего пользования есть веб-браузер, и пользователю будет удобно его использовать. Хорошо, он также поддерживает ftp, но если вы все равно собираетесь использовать веб-браузер ...
dmckee

2
Вил, мы не говорим о серверах общего назначения, таких как Apache, здесь. Мы говорим о специальных минимальных инструментах. Woof заставляет chttpd выглядеть тяжелым .
dmckee

0

Могу ли я порекомендовать http://code.google.com/p/pyftpdlib/ ?
Это легковесно, загрузите исходный код и напишите скрипт на Python (достаточно просто скопировать часть быстрого запуска на домашней странице, 5-6 строк, задать имя пользователя и пароль, домашний каталог и т. Д.)
Я использую его для личного использования. Передача файлов с компьютера на компьютер (на Ubuntu Hardy). одна известная проблема (и я могу с этим смириться) заключается в том, что она не может хорошо обрабатывать Unicode (не ASCII).


0

Ответ прост: thttpd. Он выигрывает в производительности, использовании памяти и безопасности. И под безопасностью я подразумеваю, что она безопасна благодаря грамотному замыслу и не делает ничего глупого, не то чтобы у нее были всевозможные «защитные» навороты. Это также почти оптимально с точки зрения размера и простоты.

Если вам нужно еще меньше и проще, у BusyBox есть httpdапплет, который также может удовлетворить ваши потребности.

Я не уверен, что они удовлетворяют некоторым вашим дополнительным требованиям, таким как обслуживание отдельных файлов, но вы можете сделать это с помощью оболочки, которая помещает символические ссылки в корень http. Однако, если вы сделаете это с thttpd, вам придется отключить ограничения символической ссылки.

(Я знаю, что этот вопрос старый, но это лучший результат в Google, и существующие ответы совсем не легки.)


2
thttpdРаньше это был мой любимый ответ, но он был удален из Debian, Ubuntu и RedHat в 2011 году, потому что он был «осиротевшим, с критическими ошибками в выпуске и мертвым апстримом». Я бы не рекомендовал это больше.
пул

0

Вы также можете попробовать HFS, также называемую HTTP File Server ( http://www.rejetto.com/hfs/ ). Хотя это приложение для Windows, оно хорошо работает с использованием WINE. Его очень низкие эксплуатационные расходы и даже полные новички, которые даже не знают, что такое файловый сервер, смогут использовать его без особых усилий. Он поддерживает функцию перетаскивания, и вы даже можете контролировать, какие IP-адреса могут обращаться к файлам, поддерживает учетные записи пользователей и контроль скорости загрузки.


1
Как это отвечает на вопрос? Более конкретно.
Пользователь 99572 в порядке
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.