sftp: Lädt alle in einem Ordner enthaltenen Dateien, Verzeichnisse und Unterverzeichnisse hoch

27

Auf der Maschine AI haben den Ordner

/home/a/

Auf der Maschine BI haben den Ordner

/home/b/

Ich möchte alle Dateien, Verzeichnisse und Unterverzeichnisse von / home / a in / home / b mit sftp übertragen.

sftp [email protected]
put /home/a/* /home/b/

aber es funktioniert nicht, ich bekomme die Fehlermeldung: "Nicht-reguläre Datei überspringen / home / a / a1" ... [a1 ist ein Unterverzeichnis von a]
Wie könnte ich die put-Anweisung ändern?

Vielen Dank! :)

BEARBEITEN:

Ich habe mit scp gelöst:

scp -r /home/a/ [email protected]:/home/b/
fibon82
quelle
2
put -rhätte auch geklappt.
WakiMiko
1
Ok, aber woher weiß ich, dass für "put command" die Option -r verfügbar ist? Wenn ich hier nur das Flag -P beschreibe ... Das selbe im Handbuch Danke! :)
fibon82
Sie sollten das stattdessen als Antwort posten.
NN
Ja. Anstatt Ihre Frage mit der Antwort zu BEARBEITEN, sollten Sie Ihre eigene Frage beantworten und akzeptieren.
@ fibon82 Das aktuelle Handbuch zu OpenSSH sftpfinden Sie im OpenSSH-Projekt .
Martin Prikryl

Antworten:

21

Obwohl nicht unbedingt mit sftp vergleichbar, ist rsync eine sehr leistungsfähige Alternative für scp und sftp, insbesondere beim Aktualisieren der Kopien von Computer A auf Computer B, da die nicht geänderten Dateien nicht kopiert werden. Es ist auch in der Lage, Dateien von Computer B zu entfernen, die von Computer A gelöscht wurden (natürlich nur, wenn es dazu aufgefordert wird).

In Ihrem Fall wäre die Syntax

rsync -zrp /home/a/ [email protected]:/home/b/

Die -rOption dient zum rekursiven Kopieren von Dateien, -zaktiviert die Komprimierung während der Übertragung und -pbehält beim Kopieren die Dateiberechtigungen (Erstellen, Bearbeiten usw.) bei, was AFAIK bei scp nicht tut. Viele weitere Optionen sind möglich. Lesen Sie wie gewohnt die manSeiten.

Karolos
quelle
Ah, Danke! :) Eine neue Sache, die ich gelernt habe!
Fibon82
@ fibon82: Gern geschehen :)
Karolos
1
Ich liebe dich, ich habe 400 MB Daten in 1 Minute mit deinem Code synchronisiert. Ich würde hinzufügen, dass Sie auch --progress verwenden sollten, sonst starren Sie auf nichts, ohne zu wissen, was passiert (und mit welcher Geschwindigkeit :))
Sandro Antonucci
1
Leider rsyncspricht nicht sftp-Protokoll. Wenn Sie also eine einrichten sftp-chroot mit ssh‚s Build ininternal-sftp dann rsyncausfällt.
Tino
17

Mit sftpdiesem Befehl wird der Inhalt des aktuellen Verzeichnisses rekursiv in das entfernte aktuelle Verzeichnis hochgeladen:

 put -r .

Sehen man sftp.

Carlos Da Costa
quelle
Der -rSwitch wird nur seit OpenSSH 5.4 unterstützt .
Martin Prikryl
1
Beachten Sie, dass der -rSwitch nur clientseitig ist (Teil des sftpBefehls). Die Server-Seite (hier: Empfängerseite) benötigt OpenSSH 5.4 nicht, nur der Client muss dies unterstützen.
Tino
9

scp(sichere Kopie) ist das Linux de facto zum Übertragen von Dateien über einen sicheren Tunnel. In Ihrem Fall möchten Sie den rekursiven Schalter verwenden, z.

scp -r /home/a/ [email protected]:/home/b/
deed02392
quelle
5
sftp und scp sind unterschiedliche Protokolle, die beide auf ssh basieren.
Paradroid
1
Ja, wenn der Server nur das SFTP-Protokoll zulässt, funktioniert diese Antwort nicht.
рüффп
4

Versuchen Sie es mit

put -r /home/a/ /home/b/

Weitere Informationen finden Sie unter: this

guest_who
quelle
1
Der -rSwitch wird nur seit OpenSSH 5.4 unterstützt .
Martin Prikryl
Beachten Sie, dass der -rSwitch nur clientseitig ist (Teil des sftpBefehls). Die Server-Seite (hier: Empfängerseite) benötigt OpenSSH 5.4 nicht, nur der Client muss dies unterstützen. Und: Dies sollte die akzeptierte Antwort sein , da es etwas verwirrend ist , (möglicherweise nicht unterstützte) rsyncAntworten auf eine mit Tags versehene Frage zu erhalten sftp.
Tino
0

Eigentlich sollte put -r funktionieren. Der Zielordner muss jedoch auf Ihrem Remote-Host vorhanden sein:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2
Dieter
quelle
Haben Sie Referenzen und Nachweise hinzugefügt, die Ihre Angaben belegen, und bestätigt, dass diese Antwort nicht bereits in einer der vorhandenen Antworten im Beitrag beantwortet wurde? Lesen Sie den Abschnitt "Warum brauche ich 50 Ruf, um Kommentare abzugeben?" , Um zu verstehen, wie Sie mit dem Kommentieren beginnen können.
Pimp Juice IT
-1

In meinem Fall rsyncwar das nicht möglich, also habe ich verwendet:

mput -rp /home/a/ /home/b/
jayarjo
quelle
mputIn OpenSSH gibt es keinen Befehl sftp. Vielleicht verweisen Sie auf psftp?
Martin Prikryl