Який легкий 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
Еліран Малька,

6

Хтось на SO вказував мені на Woof . Мінімальний httpd в python з інтерфейсом, оптимізованим саме для таких цілей. Він насправді не відповідає всім вашим вимогам, але, дозволяючи вказати кількість разів, коли він підключиться, дозволяє використовувати "Ви готові? Я запускаю сервер зараз". підхід до забезпечення передачі.

Щоб дозволити завантаження одного (1) з'єднання thisfileна порт 8080, просто запустіть

$ woof thisfile

Це так просто.

Ось досить зловживаний оригінал . Якщо вам це подобається, голосуйте за Нейт.


Також чудово підходить для "завантаження" (якщо вам потрібен файл від користувача, який не може або не встановить сам сервер)
golimar

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-серверів, яких я знаю, не дуже легкі і мають велику кількість некрасивого додаткового багажу, що робить їх непридатними для простої одноразової передачі файлів (тобто потрібні кореневі права, акаунти на машині для доступу до пароля , негнучка обробка каталогів тощо). З Pure-FTPd я навіть не міг зрозуміти, як запустити його як некористувацький користувач.
Grumbel

1
Домовились. Це називається протокол передачі файлів з причини. HTTP, з іншого боку, є протоколом передачі HyperText. Можливо, зараз вас не цікавить HyperText.
Лі Б

1
FTP - це не дурна ідея, але чи є у вас пропозиція щодо тієї, яку просто налаштувати так, як просила ОП?
dmckee

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

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

0

Чи можу я рекомендувати http://code.google.com/p/pyftpdlib/ ?
Це легкий вага, завантажте вихідний код і написати сценарій Python (просто скопіювати швидкий старт частина на домашній сторінці досить, 5-6 рядків, набір ім'я користувача і пароль, домашній каталог і т.д.)
я використовую його для особистого передача файлів з ПК на ПК (на Hardware Ubuntu). одна відома проблема (і я можу це вирішити), це те, що вона не може добре впоратися з Unicode (не-ASCII).


0

Відповідь проста: thttpd. Це виграє знизу в експлуатаційному режимі, використанні пам'яті та безпеці. І під безпекою я маю на увазі, що це безпечно завдяки грамотному дизайну і не робить нічого дурного, не те, що в ньому є всілякі дзвіночки та свистки безпеки. Це також майже оптимально щодо розміру та простоти.

Якщо вам потрібні ще менші та простіші, BusyBox має httpdаплет, який також може відповідати вашим потребам.

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

(Я знаю, що це питання давнє, але це найкращий результат в Google, і наявні відповіді - це лише легка вага.)


2
thttpdРаніше була моєю улюбленою відповіддю, але вона була видалена з Debian, Ubuntu та RedHat в 2011 році, оскільки вона "осиротіла, має критичні помилки щодо випуску і мертва вгору за течією". Я б більше не рекомендував його.
poolie

0

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


1
Як це відповідає на питання? Будьте більш конкретні.
користувач 99572 прекрасно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.