Welcher einfache HTTP- oder FTP-Server eignet sich für die einfache Dateiübertragung? [geschlossen]

25

Diese Frage folgt auf Wie kopiere ich Dateien auf einen nicht vertrauenswürdigen Computer? Da es anscheinend keine spezielle App für diesen Zweck gibt, suche ich jetzt nach einem http- oder ftp-Server als Alternative. Insbesondere suche ich nach einem kompakten Server, der für eine einfache einmalige Dateiübertragung zwischen Computern geeignet ist. Damit meine ich, dass es als rsync / scp-Ersatz fungieren sollte, um Dateien von einem Computer auf einen anderen zu übertragen, und nicht als klassischer Webserver. Außerdem sollte es:

  • im Userspace laufen
  • Seien Sie einfach zu konfigurieren (dh keine Konfigurationsdatei, alles über die Befehlszeile möglich)
  • Support Benutzername / Passwort
  • unterstütze die Fortsetzung der Downloads
  • Unterstützung des Exports einzelner Dateien anstelle ganzer Verzeichnisse

Die Antwort von dbr auf die vorige Frage wird knapp, aber es handelt sich natürlich nur um einen Ad-hoc-Hack, dem viele nützliche Funktionen fehlen.

Grumbel
quelle
Verwenden Sie Apache2 einfach schneller als Python SimpleHTTPServer über 4x.
o0omycomputero0o

Antworten:

31

Ich benutze diesen schnellen Python-Hack oft, um ein Verzeichnis über HTTP zu bedienen.

python -m SimpleHTTPServer &

wird das aktuelle Verzeichnis bedienen.

Standardmäßig wird es an Port 8000 gebunden.

So wählen Sie einen anderen Port aus:

python -m SimpleHTTPServer 9090 &

Wenn Sie unter * nix einen niedrigeren Port als 1024 auswählen, benötigen Sie möglicherweise Root-Rechte, da sonst bind () fehlschlägt.

Aussenseiter
quelle
3
Wirklich nicht sicher, warum diese Frage geschlossen wurde. Die Frage und die Antwort waren beide sehr nützlich.
merlin2011
8
Oder das Python 3-Äquivalent:python3 -m http.server
Eliran Malka
6

Jemand auf SO hat mich auf Woof hingewiesen . Ein minimaler httpd in Python mit einer Oberfläche, die speziell für solche Zwecke optimiert wurde. Es erfüllt nicht alle Ihre Anforderungen. Indem Sie jedoch angeben, wie oft die Verbindung hergestellt werden soll, können Sie die Option "Sind Sie bereit? Ich starte den Server jetzt." Verwenden. Ansatz zur Sicherung der Übertragung.

Damit eine (1) Verbindung thisfileauf Port 8080 heruntergeladen werden kann , müssen Sie nur ausführen

$ woof thisfile

So einfach ist das.

Hier ist das eher missbrauchte Original . Wenn es dir gefällt, stimme für Nate.

dmckee
quelle
Funktioniert auch hervorragend für "Upload" (falls Sie eine Datei von einem Benutzer benötigen, der selbst keinen Server installieren kann oder will)
golimar
3

Sie können webfs ausprobieren, das über das Ubuntu-Repository verfügbar ist:

Webfs (aka webfsd) ist ein einfacher HTTP-Server für rein statische Inhalte. Sie können damit beispielsweise den Inhalt eines FTP-Servers über HTTP bereitstellen. Es kann auch verwendet werden, um einige Dateien schnell zu exportieren, indem ein httpd-Server in wenigen Sekunden gestartet wird, ohne zuvor die Konfigurationsdateien zu bearbeiten.

Eine weitere Option ist HFS (Http File Server) , eine Windows-App, die über Wine gut funktioniert .

HFS (Http File Server) ist eine Filesharing-Software, mit der Sie Dateien senden und empfangen können. Sie können diese Freigabe auf wenige Freunde beschränken oder für die ganze Welt offen sein. HFS unterscheidet sich vom klassischen Filesharing, da kein Netzwerk vorhanden ist. [...] Da es sich tatsächlich um einen Webserver handelt, können Ihre Freunde Dateien herunterladen, als würden sie sie mit einem Webbrowser von einer Website herunterladen.

Nagul
quelle
1
Was ist los mit den Abstimmungen hier unten? Das OP fragte nach einfachen http-Servern, und die Leute haben sie angeboten. Was ist also das Problem.
dmckee
HFS funktioniert auch hervorragend für "Upload" (falls Sie eine Datei von einem Benutzer benötigen, der selbst keinen Server installieren kann oder will)
Golimar
1

Ignorieren Sie bitte, wenn Sie nicht für Alternativen offen sind, aber die Tatsache, dass Sie bereit sind, einen HTTP-Server ohne Voreinstellungen zu installieren, zeigt mir, dass Sie die Aufgabe, eine Datei zu übertragen, mehr erledigen möchten, als dies der Fall ist.

Darf ich empfehlen, einen FTP-Server zu installieren?

Sie können so ziemlich alles tun, was Sie benötigen, und es ist normalerweise sehr einfach einzurichten. Sie können sogar den Port für die Verwendung von 80 konfigurieren, wenn dies erforderlich ist.

William Hilsum
quelle
1
FTP wäre natürlich auch in Ordnung, aber die meisten FTP-Server, die ich kenne, sind nicht gerade leicht und werden mit viel hässlichem Zusatzgepäck geliefert, das sie für einfache einmalige Dateiübertragungen ungeeignet macht (dh Root-Rechte erfordern, Konten auf dem Computer für den Passwortzugriff) , unflexible Verzeichnisverwaltung usw.). Mit Pure-FTPd konnte ich nicht einmal herausfinden, wie man es als Nicht-Root-Benutzer startet.
Grumbel,
1
Einverstanden. Es heißt File Transfer Protocol aus einem Grund. HTTP ist dagegen das HyperText Transfer Protocol. Möglicherweise interessieren Sie sich momentan nicht für HyperText.
Lee B
1
FTP ist keine blöde Idee, aber haben Sie einen Vorschlag für einen, der so einfach einzurichten ist, wie es das OP verlangt hat?
dmckee
1
Der Vorteil von http ist, dass auf jedem Computer für den allgemeinen Gebrauch ein Webbrowser installiert ist und der Benutzer ihn problemlos verwenden kann. OK, es unterstützt auch FTP, aber wenn Sie sowieso einen Webbrowser verwenden ...
dmckee
2
Wil, wir sprechen hier nicht über Allzweckserver wie Apache. Wir sprechen von speziellen, minimalen Werkzeugen. Woof lässt chttpd schwer aussehen .
dmckee
0

Darf ich http://code.google.com/p/pyftpdlib/ empfehlen ?
Es ist leicht, lade den Quellcode herunter und schreibe ein Python-Skript (kopiere einfach den Schnellstart-Teil auf der Homepage, es reicht aus, 5-6 Zeilen, setze Benutzername und Passwort, Home-Verzeichnis usw.).
Ich benutze es für persönliche Zwecke Dateiübertragung von PC zu PC (auf Ubuntu Hardy). Ein bekanntes Problem (und ich kann es ertragen) ist, dass es mit Unicode (nicht-ASCII) nicht gut umgehen kann.

sunqiang
quelle
0

Die Antwort ist einfach: thttpd. Es gewinnt zweifellos an Leistung, Speichernutzung und Sicherheit. Und unter Sicherheit verstehe ich, dass es durch kompetentes Design sicher ist und nichts Dummes tut, nicht, dass es alle Arten von "Sicherheits-Schnickschnack" hat. Es ist auch in Bezug auf Größe und Einfachheit nahezu optimal.

Wenn Sie noch kleiner und einfacher benötigen, bietet BusyBox ein httpdApplet, das möglicherweise auch Ihren Anforderungen entspricht.

Ich bin mir nicht sicher, ob sie einige Ihrer Anforderungen erfüllen, beispielsweise das Bereitstellen einzelner Dateien, aber Sie können dies mit einem Wrapper tun, der Symlinks in das http-Stammverzeichnis einfügt. Wenn Sie dies jedoch mit thttpd tun, müssen Sie die Symlink-Einschränkungen deaktivieren.

(Ich weiß, diese Frage ist alt, aber es ist ein Top-Ergebnis bei Google und die vorhandenen Antworten sind alles andere als leicht.)

R ..
quelle
2
thttpdwar auch meine Lieblingsantwort, wurde aber 2011 von Debian, Ubuntu und RedHat entfernt , weil es "verwaist" war, veröffentlichungskritische Fehler aufweist und im Upstream tot ist. Ich würde es nicht mehr empfehlen.
Poolie
0

Sie können auch HFS, auch als HTTP-Dateiserver bezeichnet, ausprobieren ( http://www.rejetto.com/hfs/ ). Obwohl es sich um eine Windows-Anwendung handelt, funktioniert sie angeblich gut mit WINE. Es ist sehr wartungsarm und selbst Anfänger, die nicht einmal wissen, was ein Dateiserver ist, können es ohne großen Aufwand verwenden. Es unterstützt Drag & Drop-Funktionen und Sie können sogar steuern, welche IP-Adressen auf die Dateien zugreifen können. Außerdem werden Benutzerkonten und die Download-Geschwindigkeitssteuerung unterstützt.

HartnäckigD
quelle
1
Wie beantwortet das die Frage? Sei genauer.
Benutzer 99572 ist in Ordnung