Wenn ich versuche, mit sftp ein Verzeichnis mit Dateien zu übertragen, erhalte ich eine Fehlermeldung:
skipping non-regular file directory_name
Das Verzeichnis enthält einige Dateien und zwei Unterverzeichnisse.
Was mache ich falsch?
sftp
, Wie cp
und scp
erfordert , 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 -r
Option.
Fügen Sie also -r
den Befehl hinzu.
-r
densftp
Befehl 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.Es ist das, was ich seit Jahren benutze.
(Die
-a
Option kümmert sich um Dinge wie die Verzeichnisrekursion)quelle
-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-P
zu sein, um einen seltsamen (Bug-?)protocol version mismatch
Fehler zu vermeiden );-z
= Komprimierung der übertragenen Daten aktivieren.-l
Switch verwendet werden muss oder nicht. Ich erinnere mich an ältere Versionen nicht enthalten-l
in-a
.Möglicherweise können Sie auch verwenden
scp
. Das allgemeine Format istscp
bedeutet "sichere Kopie". Die Flaggen sind-r
in Unterverzeichnisse zurückverfolgen-p
Änderungszeiten einhaltenIch glaube, der Rest der Artikel ist selbsterklärend
quelle
Das funktioniert bei mir:
1) Verbinden Sie sich über
sftp
mit dem Remote-Host2) 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 *
quelle
Wenn
rsync
keine Option ist, würde ich als nächstes empfehlenlftp
:Verwenden Sie dann den
mirror
Befehl zum rekursiven Hochladen wie folgt:(Beachten Sie, dass Rekursion ist die Standardeinstellung Die.
-R
Ist für Reverse -. Den Spiegel Befehl Upload statt Download zu machen Versuchen Sie ,--dry-run
einen Versuch zu tun , um sicherzustellen, dass es tut , was Sie erwarten.)Oder ohne Rekursion hochladen:
Sie müssen
cd
in die Verzeichnisse, die Sie spiegeln möchten. Funktioniert super!quelle
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.
quelle
Es ist ein bisschen kludge, aber was für mich funktioniert, ist:
ssh
diese Option, um sich beim Remote-Computer anzumeldensftp
vom Remote-Computer auf Ihrem lokalen Computerget
Befehl mit der-r
Option, um das Verzeichnis und alle seine Dateien zu verschieben.quelle
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
Wenn Sie jedoch ein Verzeichnis übertragen, empfehle ich je nach Bedarf zwei bessere Optionen.
sftp
erfordert 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:
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.
Hier ist eine Liste der am häufigsten verwendeten rsync-Optionen: ( von hier übernommen )
Ich hoffe, das hilft!
quelle
Sie können vom Server zu Ihrem lokalen Pfad gelangen, indem Sie
quelle