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 fibon82@machineB.com
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/ fibon82@machineB.com:/home/b/

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/ user@remote.host.com:/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.


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.


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/ user@remote.host.com:/home/b/

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


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

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/

mputIn OpenSSH gibt es keinen Befehl sftp. Vielleicht verweisen Sie auf psftp?
Martin Prikryl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.