Der SCP-Befehl ist vielfältig einsetzbar und lässt sich auf der Kommandozeile mit den bekannten Mustern zur Angabe von Dateien und Verzeichnissen kombinieren. Angesichts der Breite der möglichen Einsatzszenarien präsentieren wir hier nur einige typische Fälle. Beachten Sie, dass heutzutage andere Tools dem SCP-Befehl vorgezogen werden, um Dateien im Netzwerk zu kopieren.
Eine Datei vom lokalen zum entfernten System kopieren
Um eine Datei 'datei.txt' vom aktuellen Verzeichnis im lokalen System auf den Host 'example.com' zu kopieren, nutzen wir den folgenden SCP-Aufruf. Beachten Sie, dass wir hier simulieren, als Nutzer mit Namen 'nutzer' Login-Zugriff auf den Host 'example.com' zu haben.
Nach erfolgreichem Kopiervorgang befindet sich auf dem Host im Verzeichnis '/pfad/zum/verzeichnis' die Datei 'datei.txt'.
Eine Datei vom entfernten zum lokalen System kopieren
Um die Richtung des Kopiervorgangs umzudrehen, vertauschen wir einfach den lokalen und den entfernten Pfad. Im ersten Beispiel nutzen wir den Punkt '.', um als Ziel das aktuelle Verzeichnis anzugeben:
Hier zeigen wir eine Abwandlung des ersten Beispiels und kopieren die Datei in den Ordner 'Desktop' im Nutzerordner, wobei dieser durch die Tilde '~' symbolisiert wird. Beachten Sie bei Nutzung der Tilde, dass dabei der lokale Benutzerordner substituiert wird. Um Fehlern vorzubeugen, sollte ein Pfad mit Tilde von Anführungszeichen umschlossen sein:
Möchten wir die Datei kopieren und unter einem anderen Namen speichern, geben wir den neuen Namen am Ende des Zielpfads an:
Mehrere Dateien kopieren
Sofern Ihnen die Nutzung des CP-Befehls geläufig ist, vermuten Sie vielleicht bereits, dass wir mit dem SCP-Befehl auch mehrere Dateien kopieren können. Der einfachste Weg, dies zu tun, besteht darin, die Dateien einzeln aufzulisten. Im folgenden Beispiel befinden sich die angegebenen Dateien im aktuellen Verzeichnis; wir sparen uns daher die Angabe des Pfads zu jeder einzelnen Datei:
Vorsicht gilt bei der Nutzung von „Wildcards“ und „Globs“ wie '?' und '*'. Auch wenn diese es komfortabel machen, Muster in Dateinamen kompakt wiederzugeben, können sie bei Nutzung im Host-Pfad zu unerwarteten Fehlern führen. Verwenden Sie in diesen Fällen besser eine Schleife, wie in unserem Beispiel „Dateien auf ein entferntes System verschieben“ gezeigt, oder greifen Sie auf ein alternatives Tool zurück.
Ein gesamtes Verzeichnis kopieren
Wie vom CP-Befehl gewohnt, kann rekursiv ein gesamtes Verzeichnis kopiert werden. Wir geben dafür vor dem Quellpfad die Option '-r' an.
Nach erfolgreicher Ausführung werden sich alle im Verzeichnis 'verzeichnis' befindlichen Dateien und Unterverzeichnisse als Kopie auf dem Host unter dem Pfad '/pfad/zum/verzeichnis' wiederfinden.
Zum Transfer größerer Dateien ist es sinnvoll, die Option '-C' zu nutzen, die die Dateien für den Transfer komprimiert:
Beachten Sie, dass SCP immer alle Dateien komplett transferiert. Bricht der Transfer ab, muss wieder ganz von vorne begonnen werden. Zum Kopieren großer Verzeichnisse oder bei wackeliger Netzwerkverbindung ist es sinnvoll, ein alternatives Tool einzusetzen.
Eine Datei zwischen zwei entfernten Systemen kopieren
Um eine Datei zwischen zwei Hosts zu kopieren, nutzen wir den SCP-Befehl ohne Angabe eines lokalen Pfads. Quell- und Zielpfad müssen die Angaben zu Nutzer und Host enthalten:
Wie eingangs angemerkt, ist es oft besser, den Transfer über das eigene System zu leiten. Wir nutzen dafür die Option '-3', die dem Quellpfad vorangestellt wird:
Dateien auf ein entferntes System verschieben
Ein komplexeres Szenario für den Einsatz des SCP-Befehls ist das Verschieben lokaler Daten auf einen Host. Dies kann z. B. zum Einsatz kommen, um ein entferntes Backup lokal nicht weiter benötigter Dateien anzulegen. Analog zur Unterscheidung der lokalen Befehle 'cp' („Copy“, Kopieren) und 'mv' („Move“, Verschieben) bietet der SCP-Befehl keine eigenständige Option für das Verschieben einer Datei. Wir können dies jedoch mit gängigen Methoden einfach selbst realisieren.
Betrachten wir zunächst die Verschieben-Operation; diese setzt sich aus Kopieren und anschließendem Löschen zusammen. Diese Abfolge von Operationen realisieren wir auf der Kommandozeile durch Kombinieren der Befehle 'scp' und 'rm', wobei letzterer zum Löschen einer Linux-Datei dient. Wir verketten die Befehle mit dem logischen AND-Operator '&&', sodass der zweite Befehl nur dann ausgeführt wird, wenn der erste erfolgreich war. Somit stellen wir sicher, dass die Kopie auf dem Host angelegt wurde, bevor das lokale Original gelöscht wird.
Zu guter Letzt nutzen wir eine 'for'-Schleife, um alle im aktuellen Verzeichnis befindlichen Dateien zu prozessieren. Optional geben wir dabei ein Muster an, um nur bestimmte Dateien oder Dateitypen einzuschließen. Da wir ein exaktes Backup jeder einzelnen Datei anlegen möchten, nutzen wir die Option '-p', um auch die Dateiattribute zu kopieren. Da es sich beim Anlegen eines Backups um einen kritischen Prozess handelt, weisen wir den SCP-Befehl mit der Option '-v' an, zusätzliche Statusinformationen auszugeben.