
Auf der Maschine AI haben Sie den Ordner
/home/a/
Auf dem Rechner BI befindet sich der Ordner
/home/b/
Ich möchte alle Dateien, Verzeichnisse und Unterverzeichnisse von /home/a nach /home/b mit SFTP übertragen. Auf dem Computer AI habe ich die folgenden Befehle ausprobiert:
sftp [email protected]
put /home/a/* /home/b/
aber es funktioniert nicht, ich erhalte die Fehlermeldung: „Nicht reguläre Datei /home/a/a1 wird übersprungen“ … [a1 ist ein Unterverzeichnis von a]
Wie kann ich die Put-Anweisung ändern?
Danke! :)
BEARBEITEN:
Ich habe es mit scp gelöst:
scp -r /home/a/ [email protected]:/home/b/
Antwort1
Obwohl es nicht unbedingt mit SFTP identisch ist,rsyncist eine sehr leistungsstarke Alternative zu scp und sftp, insbesondere beim Aktualisieren der Kopien von Maschine A auf Maschine B, da es die Dateien, die nicht geändert wurden, nicht kopiert; es kann auch Dateien von Maschine B entfernen, die von Maschine A gelöscht wurden (natürlich nur auf Anweisung).
In Ihrem Fall wäre die Syntax
rsync -zrp /home/a/ [email protected]:/home/b/
Die -r
Option dient zum rekursiven Kopieren von Dateien, -z
aktiviert die Komprimierung während der Übertragung und -p
behält die Dateiberechtigungen (Dateierstellung, -bearbeitung usw.) beim Kopieren bei, was scp meines Wissens nach nicht tut. Viele weitere Optionen sind möglich; lesen Sie wie üblich die man
Seiten.
Antwort2
Dieser sftp
Befehl lädt den Inhalt des aktuellen Verzeichnisses rekursiv in das aktuelle Remote-Verzeichnis hoch:
put -r .
Sehenman sftp
.
Antwort3
scp
(Secure Copy) ist die Linux-Standardmethode zum Übertragen von Dateien über einen sicheren Tunnel. In Ihrem Fall sollten Sie den rekursiven Schalter verwenden, z. B.:
scp -r /home/a/ [email protected]:/home/b/
Antwort4
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