Einfachste Methode zum Senden von Dateien über das Netzwerk

14

Was ist die einfachste und vielseitigste Möglichkeit, Dateien über das Netzwerk an andere Computer zu senden? Damit meine ich Computer, die andere Leute gerade benutzen. Ich glaube nicht, dass SSH funktioniert, wenn auf dem Computer eine aktive Sitzung geöffnet ist.

Bisher benutze ich netcat, was in Ordnung funktioniert. Aber gibt es noch andere einfache Möglichkeiten, dies zu tun? Ein Problem, das ich habe netcat, ist, dass der Empfänger die Dateiendung kennen und einen Namen für den Stream finden muss.

TomTom
quelle
1
Wenn Sie weiterhin verwenden möchten, können netcatSie ein tarArchiv senden und es sofort extrahieren. Dadurch wird das Problem mit dem Dateinamen gelöst und es ist flexibler. Aber am Ende denke ich, scpoder rsyncist die einfachere Option.
Marco
Wie würde es funktionieren, Teer zu senden und im laufenden Betrieb zu extrahieren?
TomTom
1
Ich nehme an, dass sich das netcat hostname | tar -xin dem Verzeichnis befindet, in dem Sie die Dateien ablegen möchten.
Dmitry Grigoryev

Antworten:

21

Sie erschweren Ihr Leben unnötig. Verwendenscp .

Um eine Datei zu übertragen Meinedat von Ihrem lokalen Verzeichnis in dem Verzeichnis / foo / bar auf Maschine other als Benutzer Benutzer , hier ist die Syntax: scp myfile user@otherhost:/foo/bar.

BEARBEITEN: Es ist zu beachten, dass die Übertragung über scp / SSH verschlüsselt ist, während die Übertragung über netcat oder HTTP nicht erfolgt. Wenn Sie also vertrauliche Dateien übertragen, verwenden Sie immer die ersteren.

dr01
quelle
Benötige ich kein Passwort für scpdas Benutzerkonto?
TomTom
Ja natürlich. Sie benötigen ein Passwort für den Account user@otherhost.
dr01
2
Nein, Sie benötigen kein Kennwort, wenn Sie die Authentifizierung mit öffentlichem Schlüssel verwenden
YoMismo
9
Ok, wenn Sie wählerisch sein mögen, lassen Sie sich Zustand , dass Sie zu authentifizieren , wie user@otherhost.
dr01
1
Außerdem können Sie zur Vereinfachung den Benutzernamen ausschließen, wenn Ihr Benutzername auf beiden Computern identisch ist. Sie werden jedoch weiterhin nach einem Passwort gefragt, falls zutreffend.
Sildoreth
10

Sie können es auch versuchen

python -m SimpleHTTPServer 8180

Es werden die Dateien in dem Verzeichnis bereitgestellt, in dem es über HTTP ausgeführt wird. Sie können über den Browser darauf zugreifen.

Anveshak
quelle
Oder verwenden Sie darkhttpd, wenn Sie mit der Leistung nicht zufrieden sind.
TNW
1
Für Python 3: python3 -m http.server <port>.
Dotancohen
Weitere Informationen zu dieser Option finden Sie hier: askubuntu.com/a/95607/42073
Erel Segal-Halevi
Vielen Dank! Perfekt, um einige Dateien auf ein Windows-Testsystem zu bekommen
QwertyChouskie
9

Wenn Sie mit netcatdem Ergebnis zufrieden sind , können Sie das Problem mit dem Dateinamen umgehen, indem Sie eine Eingebung vornehmentar . Dies vereinfacht auch das gleichzeitige Senden mehrerer Dateien sowie das Senden von Verzeichnissen.

Auf der sendenden Seite verwenden:

tar cf - <files> | nc <host> <port>

Und auf der Empfangsseite:

nc -l <port> | tar x

Eine andere Lösung wäre, rsyncoder zu verwenden scp.

Marco
quelle
Normalerweise füge ich -q2 zum Senden hinzu netcat, um die Verbindung am Ende des Streams zu beenden.
Simon Richter
Ich verstehe nicht, warum dies erforderlich sein sollte. Es wird automatisch ohne die -qOption heruntergefahren .
Marco
Das hängt davon ab, welche Netcat-Implementierung Sie verwenden. Es gibt Implementierungen, die nur eine Richtung des TCP-Streams schließen, wenn stdin geschlossen wird, da die andere Richtung möglicherweise noch aktiv ist.
Simon Richter
tar | ssh tarfunktioniert auch sehr gut, wenn scp ausfällt und rsync nicht verfügbar ist.
Hobbs
2

Funktioniert natürlich, sshwenn eine andere Sitzung geöffnet ist. Sie können es einfach tun

ssh user@host cat /path/to/file.tar  > localfile.tar

Oder kopieren Sie in Ihr lokales Verzeichnis:

scp user@host:/path/to/file.tar .
terdon
quelle
Ist es zB umgekehrt möglich ssh lubuntu '>newfile.txt' <file.txt?
Heemayl
1
@heemayl ja, um in eine entfernte Datei zu gelangen, würdest du tun cat local.file | ssh user@host "cat > remote.file", oder ssh user@host "cat > remote.file" < local.file.
Terdon
0

Wenn sich beide Hosts im selben LAN befinden, können Sie woos verwenden .

Die Bedienung ist denkbar einfach.

Wenn sich Sender und Empfänger ÜBERALL im Internet befinden und Sie GROSSE DATEIEN übertragen müssen, sollten Sie F * EX installieren: http://fex.belwue.de/index.html

Framstag
quelle
1
basic scp ist auch extrem einfach und ein Tool, das von Millionen von Menschen tatsächlich verbreitet, verwendet und genutzt wird, im Gegensatz zu diesen selbstgemachten Tools, die scheinbar von ihrem Autor beworben werden.
Jack Wasey