Dateien kopieren mit SCP und RSYNC

Inhaltsverzeichnis

Dateien kopieren mit SCP

Mit dem SCP Befehl (secure copy) werden Daten verschlüsselt zwischen 2 Rechnern übertragen. Hierzu muss auf dem Quell- und Zielrechner SSH installiert sein.

Für die Anmeldung und Verbindung zum Server wird SSH verwendet und für die Übertragung der Daten das SCP-Protokoll. Der Vorteil gegenüber dem FTP-Protokoll ist die Dateiübertragung über eine gesicherte Verbindung, welche per Standard über den SSH-Port 22 erfolgt.  Aus Sicherheitsgründen wird dieser aber meist geändert und muss daher mit der Option  -P berücksichtigt werden.

Hier einige Beispiele:

Kopiert die Datei „foobar.txt“ vom Remote-Host zum Local-Host in das Verzeichnis „foo/bar“

$ scp -P {port} {username}@{remotehost}:foobar.txt /foo/bar

Kopiert das Verzeichnis inkl. Unterverzeichnisse „foo“ vom Local-Host zum Remote-Host in das Verzeichnis „foo/bar“

scp -r /foo/ {username}@{remotehost}:foo/bar

Das -r steht hier für rekursiv und meint, dass alle Dateien und Ordner kopiert werden sollen.

Dateien synchronisieren mit RSYNC

Der Befehl RSYNC kopiert wie SCP Dateien und Ordner über das Netzwerk. Der wesentliche Unterschied im Gegensatz zu SCP ist, dass nicht nur ganze Dateien kopiert werden, sondern auch Fragmente von Dateien. Ändert sich eine Quelldatei, dann werden nur geänderte Teile der Datei übertragen (Delta-Kodierung).

Kopiert das Verzeichnis inkl. Unterverzeichnisse „foo/bar“ vom Local-Host zum Remote-Host in das Verzeichnis „foo“

rsync -a /foo/bar/ {username}@{remotehost}:foo/bar

Das -a umfasst mehrere Optionen:

  • kopiert alle Unterverzeichnisse
  • kopiert symbolische Links
  • die Rechte der Quelldatei bleiben erhalten
  • die Zeiten der Quelldatei bleiben erhalten
  • die Gruppenrechte der Quelldatei bleiben erhalten
  • Besitzrechte und Geräterechte der Quelldatei bleiben erhalten (nur bei root)

Kopiert das Verzeichnis inkl. Unterverzeichnisse „foo/bar“ vom Local-Host zum Remote-Host in das Verzeichnis „foo“ mit aktivierter Komprimierung

rsync -za /foo/bar/ {username}@{remotehost}:foo/bar

Die Option -z aktiviert die Komprimierung und die Dateien werden schneller übertragen. Das setzt allerdings eine schnelle CPU voraus.

Kopiert das Verzeichnis mit aktivierter Komprimierung und einem Fortschrittsbalken

rsync -za -P /foo/bar/ {username}@{remotehost}:foo

Kopiert das Verzeichnis mit aktivierter Komprimierung, einem Fortschrittsbalken und einem abweichenden Port

rsync -za -P -e "ssh -p 234" /foo/bar/ {username}@{remotehost}:foo/bar