2010-03-25 17 views
12

Gibt es im ssh-Protokoll einen Mechanismus für die Dateiübertragung?
Ich arbeite an einer bestehenden Codebasis, die bereits ssh-Anlagencode hat. Jetzt muss ich Dateien über SSH-Verbindung übertragen. Wenn ssh-Protokoll es bereits unterstützt, muss ich scp-Zeug nicht darin integrieren.Datei über ssh übertragen

Danke.

Bearbeiten:
Im mit C, ssh-Code basierend auf openssh.
Ich muss die Datei programmgesteuert übertragen, ohne ein externes Programm/Kommando wegen einiger Einschränkungen zu verwenden. Das Programm soll jede Größe Datei auf Remote-Host Chunk-by-Chunk übertragen und den Chunk on-the-fly verarbeiten. Dann werden die Chunk-Daten verworfen.

+0

mögliche Duplikate von [Übertragen von Dateien über SSH] (http://StackOverflow.com/Questions/343711/Transferring-Files-Over-SSH) – Ajedi32

Antwort

5

sftp und scp sind beide "sichere" Dateiübertragungsmethoden, aber Ihre Antworten hängen davon ab, welchen Technologie-Stack Sie für Ihre Anwendung verwenden. Sie erwähnen nicht, ob Sie C#, PHP oder eine andere Sprache verwenden oder auf welcher Maschine Ihre App läuft. Diese Dinge werden einen großen Einfluss auf die Antworten haben, die Sie bekommen werden.

+0

Ich benutze C, ssh-Code basierend auf openssh. – datasunny

2

Versuchen Sie, Blick auf SFTP.

Bearbeiten: Sie könnten auch this article nützlich in Bezug auf das Ausführen von Rsunc über ssh finden.

20
echo "hello" | ssh [email protected] "cat - > /tmp/file" 

I Juste die Datei, Pipe es in SSH lesen und schreiben auf dem SSHHost Server im Verzeichnis/tmp/Datei.

+0

Ich muss die Datei programmgesteuert übertragen, da es einige Speicher-/Festplattenbeschränkungen gibt. – datasunny

+0

+1 für die guten alten Tage :-) Ich weiß, dass dieser Beitrag alt ist, aber Sie können dies in einer skriptfähigen Weise mit ssh-Schlüssel tun: http://www.linuxproblem.org/art_9.html – zje

1

Rsync von Hilfe sein kann:

rsync [email protected]:filename remotefilename 
+0

scheint es leider rsync muss auf beiden Rechnern verfügbar sein – Hafenkranich

4

Der alte Schule Weg ist "tar-to-Teer", die eine gute Arbeit der Kopien erstellt und die Erhaltung von Berechtigungen. Dies wurde weitgehend durch die Verwendung von rsync ersetzt, wenn beide Seiten rsync haben.

ssh [email protected] "cd mydir && tar cfp - mysubdir" | tar xvfp - 

Seien Sie vorsichtig mit Sparse-Dateien usw., wenn Sie dies tun. Die meisten Teer haben eine Option, um während dieses Prozesses Dateilücken zu erhalten.

+0

Beachten Sie, dass beide Seiten in der Lage sein müssen, rsync zu verwenden – Hafenkranich