sftp: Laden Sie alle in einem Ordner enthaltenen Dateien, Verzeichnisse und Unterverzeichnisse hoch

Auf Maschine A habe ich den Ordner

/home/a/

Auf Maschine 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 Maschine A habe ich die 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 überspringen"... [a1 ist ein Unterverzeichnis von a]
Wie kann ich die put Anweisung ändern?

Dank! :)

BEARBEITEN:

Ich habe es gelöst mit scp:

scp -r /home/a/ [email protected]:/home/b/
 31
Author: Community, 2012-02-08

6 answers

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

In Ihrem Fall, wäre die syntax

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

Die Option -r dient zum rekursiven Kopieren von Dateien, -z ermöglicht die Komprimierung während der Übertragung, und -p behält die Dateiberechtigungen (Dateierstellung, Bearbeiten, etc.) beim Kopieren, was scp AFAIK nicht tut. Viele weitere Optionen sind möglich; lesen Sie wie gewohnt die Seiten man.

 23
Author: Karolos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-02-08 22:41:19

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

 put -r .

Siehe man sftp.

 24
Author: Carlos Da Costa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-10-03 06:34:10

scp (secure copy) ist das Linux de facto für die Übertragung von Dateien über einen sicheren Tunnel. In Ihrem Fall möchten Sie den rekursiven Schalter verwenden, z. B.:

scp -r /home/a/ [email protected]:/home/b/
 10
Author: deed02392,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-10-10 12:40:19

Versuche es mit

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

Für weitere Informationen check out: this

 4
Author: guest_who,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-01-04 14:02:14

Eigentlich sollte put-r funktionieren. Der Destintionsordner 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
 0
Author: Dieter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-10-05 13:53:58

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

mput -rp /home/a/ /home/b/
 -1
Author: jayarjo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-02-14 10:10:51