it-swarm.com.de

Verwenden von SFTP zum Übertragen eines Verzeichnisses?

Wenn ich versuche, mit sftp ein Verzeichnis mit Dateien zu übertragen, wird folgende Fehlermeldung angezeigt:

skipping non-regular file directory_name

Das Verzeichnis enthält einige Dateien und zwei Unterverzeichnisse.

Was mache ich falsch?

54
haziz

sftp erfordert wie cp und scp, dass Sie beim Kopieren eines Ordners (und natürlich seines Inhalts) explizit angeben müssen, dass Sie den Ordner rekursiv übertragen möchten mit dem -r Möglichkeit.

Fügen Sie also -r zum Befehl.

53
Kevin

Ich kann nur vorschlagen, dass Sie rsync verwenden. Es ist ein Industriestandard, wenn Dateien über sichere Verbindungen verschoben werden.

rsync -alPvz ./source_dir server.com:destination_dir

Es ist das, was ich seit Jahren benutze.

(das -a Option kümmert sich um Dinge wie Verzeichnisrekursion)

23
polemon

Das funktioniert bei mir:

1) Stellen Sie über sftp eine Verbindung zum Remote-Host her

2) Wechseln Sie in das Remote-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) Geben Sie diesen Befehl ein: get -r *

6
Don Karon

Möglicherweise können Sie auch use scp verwenden. Das allgemeine Format ist

scp -rp sourceDirName [email protected]:destDirName

scp bedeutet "sichere Kopie". Die Flaggen sind

  • -r Rekurs in Unterverzeichnisse
  • -p Änderungszeiten beibehalten

Ich glaube, der Rest der Artikel ist selbsterklärend

5
Bina Ramamurthy

Wenn rsync keine Option ist, würde ich als nächstes lftp empfehlen:

lftp sftp://[email protected]/path/path/

Verwenden Sie dann den Befehl mirror, um rekursiv wie folgt hochzuladen:

mirror -R

(Beachten Sie, dass die Rekursion die Standardeinstellung ist. Das -R ist für mgekehrt - um den Spiegelbefehl hochzuladen anstatt herunterzuladen. Versuchen Sie, --dry-run einen Test durchführen, um sicherzustellen, dass er das tut, was Sie erwarten.)

Oder ohne Rekursion hochladen:

mirror --no-recursion

Sie müssen cd in die Verzeichnisse eingeben, die Sie spiegeln möchten. Funktioniert super!

5
Banago

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

Wenn Sie sich fragen: Wie verwende ich SFTP, um ein Verzeichnis zu übertragen?

 sftp -r [email protected]

Wenn Sie jedoch ein Verzeichnis übertragen, kann ich je nach Ihren Anforderungen zwei bessere Optionen vorschlagen. sftp erfordert die Anmeldung beim Remote-Server mit 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, um hochzuladen:

 # upload source directory to remote server
 scp -rp source_dir [email protected]:dest

 #download directory from remote server:
 scp -rp [email protected]:source_dir dest

 #specifying ssh key:
 scp -rp -i ~/.ssh/key [email protected]:source_dir dest

 #remote directory has spaces
 scp -rp -i ~/.ssh/key [email protected]:"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 so Übertragungszeit und Daten über das Kabel.

rsync -r -a -v -e ssh --delete source_dir [email protected]:dest

Hier ist eine Liste einiger der häufigsten rsync-Optionen: ( von hier übernommen )

  • --delete - löscht Dateien, die auf dem Absender (System) nicht vorhanden sind
  • -v - ausführlich (-vv liefert detailliertere Informationen)
  • -e "ssh options" - Geben Sie den ssh als Remote-Shell an
  • -a - Archivierungsmodus - Erhält Berechtigungen (Eigentümer, Gruppen), Zeiten, symbolische Links und Geräte
  • -r - Rekurs in Verzeichnisse
  • -z - komprimiert Dateidaten während der Übertragung
  • - 'Ordnername ausschließen' - schließt den entsprechenden Ordner von der Übertragung aus
  • -P - Fortschritt während der Übertragung anzeigen

Ich hoffe, das hilft!

0
Dan Williams

sie können vom Server zu Ihrem lokalen Pfad über gelangen

scp -rp [email protected]:directoryname(full path) .
0
user368621

Es ist ein bisschen kludge, aber was für mich funktioniert, ist:

  1. Verwenden Sie ssh, um sich am Remote-Computer anzumelden
  2. Verwenden Sie sftp vom Remote-Computer zu Ihrem lokalen Computer
  3. Verwenden Sie dann den Befehl get mit dem Befehl -r Option zum Verschieben des Verzeichnisses und aller seiner Dateien.
0
Matthew Greene