Który lekki serwer HTTP lub FTP nadaje się do prostego przesyłania plików? [Zamknięte]

25

To pytanie stanowi odpowiedź na pytanie, jak skopiować pliki na niezaufany komputer? , ponieważ wydaje się, że nie ma dedykowanej aplikacji do tego celu, teraz szukam serwera http lub ftp jako alternatywy. Mówiąc dokładniej, szukam lekkiego serwera, który nadaje się do prostego jednorazowego przesyłania plików między komputerami. Rozumiem przez to, że powinno działać jak zamiennik rsync / scp, aby przenosić pliki z jednego komputera na drugi, a nie jak klasyczny serwer WWW. Ponadto powinien:

  • uruchomić w przestrzeni użytkownika
  • trywialne w konfiguracji (tzn. brak pliku konfiguracyjnego, wszystko możliwe do wykonania za pomocą wiersza poleceń)
  • obsługuje nazwę użytkownika / hasło
  • wspierać kontynuację pobierania
  • obsługuje eksport pojedynczych plików zamiast całych katalogów

Odpowiedź dbr na poprzednie pytanie zbliża się, ale jest to po prostu hack ad hoc, który nie ma wielu przydatnych funkcji.

Grumbel
źródło
Wystarczy użyć Apache2 szybciej niż Python SimpleHTTPServer około 4x.
o0omycomputero0o

Odpowiedzi:

31

Często używam tego szybkiego włamania do Pythona, aby udostępnić katalog przez HTTP.

python -m SimpleHTTPServer &

będzie obsługiwał bieżący katalog.

Domyślnie łączy się z portem 8000.

Aby wybrać inny port:

python -m SimpleHTTPServer 9090 &

Jeśli wybierzesz port niższy niż 1024 w * nix, możesz potrzebować uprawnień roota, w przeciwnym razie bind () nie powiedzie się.

maniak
źródło
3
Naprawdę nie jestem pewien, dlaczego to pytanie zostało zamknięte. Zarówno pytanie, jak i odpowiedź były bardzo przydatne.
merlin2011
8
Lub odpowiednik Python 3:python3 -m http.server
Eliran Malka
6

Ktoś z SO wskazał mi Woof . Minimalny httpd w pythonie z interfejsem zoptymalizowanym do takich zastosowań. W rzeczywistości nie spełnia wszystkich twoich wymagań, ale umożliwiając określenie liczby połączeń, umożliwia użycie opcji „Czy jesteś gotowy? Teraz uruchamiam serwer”. podejście do zabezpieczenia transferu.

Aby umożliwić jedno (1) połączenie do pobrania thisfilena porcie 8080, wystarczy uruchomić

$ woof thisfile

To takie proste.

Oto raczej nadużywany oryginał . Jeśli ci się podoba, idź głosować na Nate'a.

dmckee
źródło
Również działa świetnie dla „upload” (w przypadku trzeba plik od użytkownika, który nie może lub nie chce się zainstalować serwer)
golimar
3

Możesz wypróbować webfs, który jest dostępny przez repozytorium Ubuntu:

Webfs (aka webfsd) to prosty serwer HTTP dla treści czysto statycznych. Możesz go użyć do wyświetlenia zawartości serwera FTP na przykład przez HTTP. Można go również użyć do szybkiego eksportu niektórych plików, uruchamiając serwer httpd w kilka sekund, bez wcześniejszej edycji plików konfiguracyjnych.

Inną opcją jest HFS (Http File Server) , aplikacja Windows, która działa dobrze przez Wine .

HFS (Http File Server) to oprogramowanie do udostępniania plików, które umożliwia wysyłanie i odbieranie plików. Możesz ograniczyć to udostępnianie tylko do kilku znajomych lub być otwartym na cały świat. HFS różni się od klasycznego udostępniania plików, ponieważ nie ma sieci. [...] Ponieważ w rzeczywistości jest to serwer sieciowy, Twoi znajomi mogą pobierać pliki tak, jakby pobierały je ze strony internetowej za pomocą przeglądarki internetowej.

nagul
źródło
1
O co chodzi z głosowaniem w dół? OP poprosił o proste serwery http, a ludzie je zaoferowali. Więc jaki jest problem.
dmckee,
HFS działa również świetnie do „wysyłania” (na wypadek, gdybyś potrzebował pliku od użytkownika, który nie może lub nie chce samodzielnie zainstalować serwera)
golimar
1

Proszę zignorować, jeśli nie jesteś otwarty na alternatywy, ale fakt, że chcesz zainstalować serwer HTTP bez preferencji, pokazuje mi, że chcesz wykonać zadanie przeniesienia pliku bardziej niż sposób -

Czy mogę polecić instalację serwera FTP?

Pozwoli ci to zrobić prawie wszystko, czego potrzebujesz i zwykle jest bardzo łatwy w konfiguracji, możesz nawet skonfigurować port, aby używał 80, jeśli jest to wymagane.

William Hilsum
źródło
1
FTP też oczywiście byłby w porządku, ale większość serwerów FTP, które znam, nie są zbyt lekkie i są wyposażone w mnóstwo brzydkiego dodatkowego bagażu, który sprawia, że ​​nie nadają się do jednorazowego transferu plików (tj. Wymagają uprawnień roota, kont na komputerze, aby uzyskać dostęp do hasła , nieelastyczna obsługa katalogów itp.). Z Pure-FTPd nie mogłem nawet wymyślić, jak go uruchomić jako użytkownik inny niż root.
Grumbel,
1
Zgoda. Z jakiegoś powodu nazywa się to File Transfer Protocol. Z drugiej strony HTTP to HyperText Transfer Protocol. Możliwe, że nie jesteś teraz zainteresowany HyperText.
Lee B
1
FTP nie jest głupim pomysłem, ale czy masz propozycję takiego, który jest torfowiskiem łatwym do skonfigurowania zgodnie z wnioskiem OP?
dmckee,
1
Zaletą protokołu http jest to, że każdy komputer ogólnego zastosowania ma przeglądarkę internetową, a użytkownik będzie z niego wygodnie korzystać. OK, obsługuje też ftp, ale jeśli i tak zamierzasz korzystać z przeglądarki internetowej ...
dmckee,
2
Wil, nie mówimy tutaj o serwerach ogólnego przeznaczenia, takich jak Apache. Mówimy o specjalnych, minimalnych narzędziach specjalnych. Woof sprawia, że ​​chttpd wygląda na ciężki .
dmckee,
0

Czy mogę polecić http://code.google.com/p/pyftpdlib/ ?
Jest lekki, pobierz źródło i napisz skrypt w języku Python (wystarczy skopiować część szybkiego startu na stronie głównej, 5-6 wierszy, ustawić nazwę użytkownika i hasło, katalog domowy itp.)
Używam go do celów osobistych transfer plików z komputera na komputer (w systemie Ubuntu Hardy). jednym znanym problemem (i mogę to znieść) jest to, że nie radzi sobie dobrze z Unicode (innym niż ASCII).

sunqiang
źródło
0

Odpowiedź jest prosta: thttpd. Wygrywa bez wątpienia pod względem wydajności, zużycia pamięci i bezpieczeństwa. A przez bezpieczeństwo rozumiem, że jest bezpieczny dzięki kompetentnemu projektowi i nie robieniu niczego głupiego, nie dlatego, że ma wszelkiego rodzaju dzwonki i gwizdy związane z bezpieczeństwem. Jest również prawie optymalny pod względem wielkości i prostoty.

Jeśli potrzebujesz jeszcze mniejszych i prostszych, BusyBox ma httpdaplet, który może również zaspokoić Twoje potrzeby.

Nie jestem pewien, czy spełniają niektóre z twoich bardziej wymagających wymagań, takich jak podawanie pojedynczych plików, ale możesz to zrobić za pomocą opakowania, które umieszcza dowiązania symboliczne w katalogu głównym http. Jeśli zrobisz to za pomocą thttpd, będziesz musiał jednak wyłączyć ograniczenia dowiązań symbolicznych.

(Wiem, że to pytanie jest stare, ale jest to najlepszy wynik w Google, a istniejące odpowiedzi są niewielkie.)

R ..
źródło
2
thttpdkiedyś była moją ulubioną odpowiedzią, ale została usunięta z Debiana, Ubuntu i RedHata w 2011 roku, ponieważ została „osierocona, ma błędy krytyczne dla wydania i jest martwa”. Nie polecałbym tego więcej.
poolie
0

Możesz także wypróbować HFS ​​zwany także HTTP File Server ( http://www.rejetto.com/hfs/ ). Chociaż jest to aplikacja Windows, mówi się, że działa dobrze przy użyciu WINE. Jego bardzo niskie koszty utrzymania, a nawet kompletni nowicjusze, którzy nawet nie wiedzą, czym jest serwer plików, będą mogli go używać bez większego wysiłku. Obsługuje funkcję przeciągnij i upuść, a nawet możesz kontrolować, które adresy IP mają dostęp do plików, obsługuje konta użytkowników i kontrolę prędkości pobierania.

Tenacious D
źródło
1
Jak to odpowiada na pytanie? Uszczegółów.
użytkownik 99572 ma się dobrze