2012-02-08 13:15:37 +0000 2012-02-08 13:15:37 +0000
29
29

sftp: Hochladen aller in einem Ordner enthaltenen Dateien, Verzeichnisse und Unterverzeichnisse

Auf Rechner A habe ich den Ordner

/home/a/

Auf Rechner B habe ich den Ordner

/home/b/

Ich möchte alle Dateien, Verzeichnisse und Unterverzeichnisse von /home/a in /home/b mit sftp übertragen Auf Rechner A habe ich die Befehle versucht:

sftp fibon82@machineB.com
put /home/a/* /home/b/

aber es funktioniert nicht, ich bekomme die Fehlermeldung: “skipping non-regular file /home/a/a1”… [a1 ist ein Unterverzeichnis von a] Wie kann ich die Put-Anweisung ändern?

Danke! :)

EDIT:

Ich habe es mit scp gelöst:

scp -r /home/a/ fibon82@machineB.com:/home/b/

Antworten (6)

21
21
21
2014-10-02 20:33:25 +0000

In sftp lädt dieser Befehl rekursiv den Inhalt des aktuellen Verzeichnisses in das entfernte aktuelle Verzeichnis:

put -r .

Siehe man sftp .

21
21
21
2012-02-08 22:41:19 +0000

Obwohl nicht streng äquivalent zu sftp, ist rsync eine sehr leistungsfähige Alternative für scp und sftp, insbesondere beim Aktualisieren der Kopien von Rechner A auf Rechner B, da es die Dateien, die nicht verändert wurden, nicht kopiert; es ist auch in der Lage, Dateien von Rechner B zu entfernen, die von Rechner 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 Option -r ist für das rekursive Kopieren von Dateien, -z aktiviert die Komprimierung während der Übertragung und -p erhält die Dateiberechtigungen (Dateierstellung, -bearbeitung usw.) beim Kopieren, was etwas ist, das scp AFAIK nicht tut. Viele weitere Optionen sind möglich; lesen Sie wie üblich die man-Seiten.

10
10
10
2012-02-08 16:04:32 +0000

scp (Sicheres Kopieren) ist das Linux-De-facto-Verfahren zum Übertragen von Dateien über einen sicheren Tunnel. In Ihrem Fall würden Sie den rekursiven Schalter verwenden wollen, z. B.:

scp -r /home/a/ user@remote.host.com:/home/b/
4
4
4
2014-01-04 14:02:14 +0000

Versuchen Sie die Verwendung von

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

Für weitere Informationen schauen Sie bitte nach: dies

0
0
0
2017-10-05 13:53:58 +0000

Eigentlich sollte put -r funktionieren. Aber der Zielordner muss 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
-1
-1
-1
2014-02-14 10:10:51 +0000

In meinem Fall war rsync nicht möglich, also habe ich verwendet:

mput -rp /home/a/ /home/b/