Antworten:
sftp, Wie cpund scperfordert , dass , wenn Sie einen Ordner (und dessen Inhalt, natürlich) zu kopieren, müssen Sie explizit sagen , Sie wollen die Ordner rekursiv mit der Übertragung -rOption.
Fügen Sie also -rden Befehl hinzu.
-rden sftpBefehl hinzu, wenn Sie eine Verbindung herstellen. sftp -r user@host
Couldn't canonicalise: No such file or directory.
# sftp user@remote-host #> get -r remote-folder
Ich kann nur vorschlagen, Sie verwenden rsync. Es ist ein gewisser Industriestandard, wenn Dateien über sichere Verbindungen übertragen werden.
rsync -alPvz ./source_dir server.com:destination_dir
Es ist das, was ich seit Jahren benutze.
(Die -aOption kümmert sich um Dinge wie die Verzeichnisrekursion)
-a= Rekursion + Symbolische Verknüpfungen, Berechtigungen, Änderungszeiten, Eigentümer, Gruppe, spezielle Dateien und Gerätedateien beibehalten (letzteres erfordert Superuser-Berechtigungen); -l= symbolische Links behalten (bereits enthalten in -a); -P= Fortschritt während der Übertragung anzeigen + teilweise übertragene Dateien behalten; -v= ausführlicher Modus (scheint jedoch obligatorisch -Pzu sein, um einen seltsamen (Bug-?) protocol version mismatchFehler zu vermeiden ); -z= Komprimierung der übertragenen Daten aktivieren.
-lSwitch verwendet werden muss oder nicht. Ich erinnere mich an ältere Versionen nicht enthalten -lin -a.
Möglicherweise können Sie auch verwenden scp. Das allgemeine Format ist
scp -rp sourceDirName username@server:destDirName
scpbedeutet "sichere Kopie". Die Flaggen sind
-r in Unterverzeichnisse zurückverfolgen-p Änderungszeiten einhaltenIch glaube, der Rest der Artikel ist selbsterklärend
Das funktioniert bei mir:
1) Verbinden Sie sich über sftpmit dem Remote-Host
2) Wechseln Sie in das entfernte Verzeichnis, das Sie kopieren möchten. (Beispiel: CD-Musik)
3) Wechseln Sie in das lokale Verzeichnis, in das Sie Inhalte kopieren möchten. (Beispiel: lcd Desktop)
4) Setzen Sie diesen Befehl ab: get -r *
Wenn rsynckeine Option ist, würde ich als nächstes empfehlen lftp:
lftp sftp://user@host.com/path/path/
Verwenden Sie dann den mirrorBefehl zum rekursiven Hochladen wie folgt:
mirror -R
(Beachten Sie, dass Rekursion ist die Standardeinstellung Die. -RIst für Reverse -. Den Spiegel Befehl Upload statt Download zu machen Versuchen Sie , --dry-runeinen Versuch zu tun , um sicherzustellen, dass es tut , was Sie erwarten.)
Oder ohne Rekursion hochladen:
mirror --no-recursion
Sie müssen cdin die Verzeichnisse, die Sie spiegeln möchten. Funktioniert super!
Wenn Sie können, verwenden Sie sshfs . Es ist ein FUSE- Dateisystem, das auf den meisten modernen Unices verfügbar ist und mit jedem SFTP-Server funktioniert. Dies ist ein Remote-Dateisystem: Sie können Remote-Dateien (über das SFTP-Protokoll) mit den üblichen Dienstprogrammen bearbeiten.
mkdir /mount/point
sshfs server.example.com:/remote/path /mount/point
ls /mount/point
cp -Rp /mount/point/somedir /local/location
fusemount -d /mount/point
Es ist ein bisschen kludge, aber was für mich funktioniert, ist:
sshdiese Option, um sich beim Remote-Computer anzumeldensftpvom Remote-Computer auf Ihrem lokalen ComputergetBefehl mit der -rOption, um das Verzeichnis und alle seine Dateien zu verschieben.sftp> get -r data /opt/bin get: Invalid flag -r
Wenn Sie sich tatsächlich die Frage stellen, wie ich mit sftp ein Verzeichnis übertrage, dann
sftp -r user@server
Wenn Sie jedoch ein Verzeichnis übertragen, empfehle ich je nach Bedarf zwei bessere Optionen. sftperfordert die Anmeldung am Remote-Server in einer ssh-ähnlichen Eingabeaufforderung. Wenn Sie jedoch nur die Datei (en) benötigen, gibt es einfachere und schnellere Möglichkeiten.
Scp
Versuchen Sie für eine einmalige Übertragung zum Hochladen Folgendes:
# upload source directory to remote server
scp -rp source_dir user@server:dest
#download directory from remote server:
scp -rp user@server:source_dir dest
#specifying ssh key:
scp -rp -i ~/.ssh/key user@server:source_dir dest
#remote directory has spaces
scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest
Rsync
Wenn Sie die Verzeichnisse regelmäßig synchronisieren möchten, ist die Verwendung von rsync sinnvoller. Es führt Deltas zwischen den beiden Verzeichnissen durch und spart Übertragungszeit und Daten über die Leitung.
rsync -r -a -v -e ssh --delete source_dir user@server:dest
Hier ist eine Liste der am häufigsten verwendeten rsync-Optionen: ( von hier übernommen )
Ich hoffe, das hilft!
Sie können vom Server zu Ihrem lokalen Pfad gelangen, indem Sie
scp -rp user@server:directoryname(full path) .