sftp: Alle in einem Ordner enthaltenen Dateien, Verzeichnisse und Unterverzeichnisse hochladen

160671
fibon82

Auf der Maschine hat AI die Mappe

/home/a/ 

Auf Maschine BI haben Sie den Ordner

/home/b/ 

Ich wünsche alle Dateien, Verzeichnisse und Unterverzeichnisse von / home / a in / home / b mit sftp zu übertragen.

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

aber es funktioniert nicht, ich erhalte die Fehlermeldung: "Überspringt nicht reguläre Datei / home / a / a1" ... [a1 ist ein Unterverzeichnis von a]
Wie kann ich die Put-Anweisung ändern?

Vielen Dank! :)

BEARBEITEN:

Ich habe mit scp gelöst:

scp -r /home/a/ fibon82@machineB.com:/home/b/ 
25
`put -r` hätte auch funktioniert. WakiMiko vor 12 Jahren 2
Ok, aber woher soll ich wissen, dass für "put command" die Option -r verfügbar ist? Wenn ich [hier] (http://www.computerhope.com/unix/sftp.htm) schaue, wird nur das Flag -P beschrieben ... Dasselbe im [Handbuch] (http://www.r3v0.net) /docs/Delta/man/sftp.html) Danke! :) fibon82 vor 12 Jahren 1
Sie sollten dies stattdessen als Antwort posten. N.N. vor 12 Jahren 0
Ja. Anstatt Ihre Frage mit der Antwort zu BEARBEITEN, sollten Sie Ihre eigene Frage beantworten und sie akzeptieren. vor 9 Jahren 0
@ fibon82 Das aktuelle Handbuch zu OpenSSH `sftp 'finden Sie im [OpenSSH-Projekt] (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/sftp.1) ). Martin Prikryl vor 9 Jahren 0

6 Antworten auf die Frage

20
Karolos

Rsync ist zwar nicht unbedingt mit sftp identisch, stellt jedoch eine sehr leistungsfähige Alternative für scp und sftp dar, insbesondere beim Aktualisieren der Kopien von Maschine A auf Maschine B, da die nicht geänderten Dateien nicht kopiert werden. Es ist auch in der Lage, Dateien von Maschine B zu entfernen, die von Maschine A gelöscht wurden (nur wenn dies natürlich gesagt wird).

In Ihrem Fall würde die Syntax lauten

rsync -zrp /home/a/ user@remote.host.com:/home/b/ 

Die -rOption dient zum rekursiven Kopieren von Dateien, -zermöglicht die Komprimierung während der Übertragung und -pbehält die Dateiberechtigungen (Dateierstellung, Bearbeiten usw.) beim Kopieren bei. Dies ist ein Vorgang, den scp nicht für AFAIK verwendet. Viele weitere Optionen sind möglich. Lesen Sie wie üblich die manSeiten.

Ah, Danke! :) Eine neue Sache, die ich gelernt habe! fibon82 vor 12 Jahren 0
@ fibon82: Gern geschehen :) Karolos vor 12 Jahren 0
Ich liebe dich, ich habe 400 MB Daten in 1 Minute mit nur deinem Code synchronisiert. Ich würde hinzufügen, dass Sie auch --progress verwenden sollten, sonst werden Sie nichts anstarren, ohne zu wissen, was passiert (und in welcher Geschwindigkeit :)) Sandro Antonucci vor 11 Jahren 1
Leider spricht "rsync" kein "sftp" -Protokoll. Wenn Sie also eine [`sftp`-chroot mit` ssh`'s build in `internal-sftp`] einrichten (https://wiki.archlinux.org/index.php/SFTP_chroot), schlägt` rsync` fehl. Tino vor 8 Jahren 1
13
Carlos Da Costa

In sftpdiesem Befehl wird der Inhalt des aktuellen Verzeichnisses rekursiv in das aktuelle Remote-Verzeichnis hochgeladen:

 put -r . 

Siehe man sftp.

Der `-r`-Schalter wird nur seit [OpenSSH 5.4] (http://www.openssh.com/txt/release-5.4) unterstützt. Martin Prikryl vor 9 Jahren 0
Beachten Sie, dass der `-r`-Schalter nur clientseitig ist (Teil des` sftp`-Befehls). Auf der Serverseite (hier: Empfangen) ist OpenSSH 5.4 nicht erforderlich, lediglich der Client muss dies unterstützen. Tino vor 8 Jahren 1
9
deed02392

scp(Secure Copy) ist das Linux, um Dateien über einen sicheren Tunnel zu übertragen. In Ihrem Fall möchten Sie den rekursiven Schalter verwenden, zB:

scp -r /home/a/ user@remote.host.com:/home/b/ 
sftp und scp sind eigentlich unterschiedliche Protokolle, die beide auf ssh basieren. paradroid vor 12 Jahren 5
Ja, wenn der Server nur das Sftp-Protokoll zulässt, funktioniert diese Antwort nicht. рüффп vor 10 Jahren 1
3
guest_who

Versuchen Sie es mit

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

Weitere Informationen finden Sie unter : diese

Der `-r`-Schalter wird nur seit [OpenSSH 5.4] (http://www.openssh.com/txt/release-5.4) unterstützt. Martin Prikryl vor 9 Jahren 1
Beachten Sie, dass der `-r`-Schalter nur clientseitig ist (Teil des` sftp`-Befehls). Auf der Serverseite (hier: Empfangen) ist OpenSSH 5.4 nicht erforderlich, lediglich der Client muss dies unterstützen. Und: ** Dies sollte die akzeptierte Antwort sein **, da das (möglicherweise nicht unterstützte) "rsync" als Antwort auf eine mit "sftp" markierte Frage etwas verwirrend ist. Tino vor 8 Jahren 0
0
Dieter

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 Verweise und Beweise hinzugefügt, die Ihre Aussagen bestätigen und bestätigt haben, dass diese Antwort nicht bereits in einer der vorhandenen Antworten in der Nachricht beantwortet wurde. Lesen Sie weiter ["Warum brauche ich 50 Reputation, um einen Kommentar abzugeben"] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can-i -do-stattdessen), um sicherzustellen, dass Sie verstehen, wie Sie mit dem Kommentieren beginnen können. Pimp Juice IT vor 6 Jahren 0
-1
jayarjo

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

mput -rp /home/a/ /home/b/ 
Es gibt keinen "mput" -Befehl in OpenSSH "sftp". Vielleicht verweisen Sie auf "psftp"? Martin Prikryl vor 9 Jahren 0