GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann scp Verzeichnisse rekursiv kopieren?

Lösung 1:

Ja, verwenden Sie -r :

scp -rp sourcedirectory [email protected]:/path
  • -r bedeutet rekursiv
  • -p behält Änderungszeiten, Zugriffszeiten und Modi der Originaldatei bei.

Hinweis:Dadurch wird die sourcedirectory erstellt innerhalb von /path somit befinden sich die Dateien in /path/sourcedirectory

Lösung 2:

Obwohl die vorherigen Antworten technisch korrekt sind, sollten Sie auch die Verwendung von rsync in Betracht ziehen stattdessen. rsync vergleicht die Daten auf der sendenden und empfangenden Seite mit einem Diff-Mechanismus, sodass bereits gesendete Daten nicht erneut gesendet werden müssen.

Wenn Sie etwas mehr als einmal auf einen entfernten Rechner kopieren möchten, verwenden Sie rsync . Eigentlich ist es gut, rsync zu verwenden jedes Mal, weil es mehr Steuerelemente für Dinge wie das Kopieren von Dateiberechtigungen und -besitz und das Ausschließen bestimmter Dateien oder Verzeichnisse hat. Allgemein:

$ rsync -av /local/dir/ server:/remote/dir/

synchronisiert ein lokales Verzeichnis mit einem entfernten Verzeichnis. Wenn Sie es ein zweites Mal ausführen und sich der Inhalt des lokalen Verzeichnisses nicht geändert hat, werden keine Daten übertragen - viel effizienter als das Ausführen von scp und jedes Mal alles kopieren.

Auch rsync ermöglicht Ihnen, im Gegensatz zu scp, eine sehr einfache Wiederherstellung nach unterbrochenen Übertragungen .

Endlich moderne Versionen von rsync läuft standardmäßig über ssh, also wenn scp funktioniert bereits, rsync sollte so ziemlich ein Drop-In-Ersatz sein.

Lösung 3:

Dafür steht der -r Option ist für. :)

Weitere Informationen finden Sie bei Bedarf auf der man-Seite von scp.

Lösung 4:

Rekursive Kopieroption '-r' (Kleinbuchstaben)

scp -r

Was ich mit der regulären lokalen rekursiven Kopieroption '-R' (Großbuchstaben) verwechsele

cp -R

Lösung 5:

Am besten verwenden Sie rsync über SSH

rsync -a -essh /source/ [email protected]:/dest/

rsync -a -essh [email protected]:/source/ /dest/

Meine bevorzugten Optionen sind -Pazvessh --delete :

  • -a :Archivmodus (umfasst viele standardmäßige allgemeine Optionen, einschließlich der Beibehaltung von Symlinks)
  • -z :komprimieren
  • -v :verbose :Dateien anzeigen
  • -P :Fortschritt als erledigte Dateien/verbleibende Dateien anzeigen
  • -e ssh :rsync im ssh-Protokoll ausführen
  • --delete :Dateien im Ziel löschen, die nicht mehr in der Quelle sind

Linux
  1. Kopieren Sie Dateien und Verzeichnisse unter Linux

  2. Wie kann ich Verzeichnisse von grep -R ausschließen?

  3. Wie kann ich Dateien rekursiv nach Dateierweiterung kopieren und dabei die Verzeichnisstruktur beibehalten?

  4. Wie kann ich alle leeren Dateien und Verzeichnisse in Linux rekursiv löschen?

  5. Vergleichen Sie 2 Verzeichnisse und kopieren Sie die Unterschiede in ein 3. Verzeichnis

Rsync-Befehl:20 hilfreiche Beispiele in Linux

So kopieren Sie eine Datei in mehrere Verzeichnisse unter Linux

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

Sicheres Kopieren von Dateien mit dem SCP-Befehl

Wie kann ich alle PDF-Dateien in einem Verzeichnis (und seinen Unterverzeichnissen) rekursiv in ein einziges Ausgabeverzeichnis kopieren?

Wie kann ich leere Verzeichnisse in meinem Home-Verzeichnis rekursiv löschen?