Der Befehl SCP

terminal-window-featured

Mit dem Befehl SCP (Secure Copy) ist es möglich, auf UNIX- bzw. Linux- Betriebssystemen Dateien über eine sichere, verschlüsselte Netzwerkverbindung zu kopieren. Dazu greift SCP für den Dateitransfer, sowie die Authentifizierung auf das SSH-Protokoll zurück.

In diesem Beitrag lernen Sie die Grundlagen zu Verwendung des Befehls SCP kennen.

Installation openssh-server

Vor der Verwendung von scp ist es notwendig, das Paket openssh-server auf der Remote-Maschine zu installieren. Verwenden Sie dazu den folgenden Befehl:

apt-get install openssh-server

Nach Abschluss der Paketinstallation können Sie den Status des SSH-Daemon überprüfen. Dieser wird nach Abschluss der Installation automatisch gestartet:

systemctl status ssh

Die Ausgabe sollte folgendermaßen aussehen:

ssh-status

Kopieren von Dateien

Der Befehl scp ähnelt stark dem Befehl cp, welcher für das lokale Kopieren von Dateien und Verzeichnissen verwendet wird. Die Syntax für das Kopieren von Dateien zwischen Ihrem lokalen Rechner und einem Host mit scp ist daher grundsätzlich auch sehr ähnlich:

scp [Optionen] [Pfad Quelle] [Pfad Ziel]

Lokale Pfade können, wie üblich, explizit in relativer oder absoluter Form angegeben werden. Lediglich bei Pfadangaben von Remote-Maschinen gibt es einige Besonderheiten zu beachten:

Beim Kopieren von oder auf einen Host wird der Hostname mit einem Doppelpunkt ':' getrennt links an den Dateipfad angehängt. Optional ist es außerdem möglich, einen Benutzer zu spezifizieren: Dazu hängen Sie den Benutzernamen zusätzlich und mit einem '@' getrennt links neben den Hostnamen an. Die Syntax lautet dann folgendermaßen:

scp [Optionen] [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]

Hier ist auch zu erkennen, dass auch das Kopieren zwischen zwei Hosts möglich ist.

Beispiel: Kopieren von Lokal auf Host

In diesem Beispiel soll die Datei "befehl-scp.txt" von dem lokalen Rechner auf den Host "192.168.2.116" kopiert werden. Der auf dem Host verwendete Benutzer ist "hellberg".

Eingabe:

scp /home/hellberg/befehl-scp.txt hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/netzwerke/

Ausgabe:
scp-lokal-host
Zielverzeichnis des Host (ls -l /home/hellberg/profi-tutorials/linux/netzwerke/):
scp-lokal-host-ls
Beispiel: Kopieren von Host auf Lokal

Hier soll die Datei "netzwerkbefehle-anfaenger.txt" aus dem Verzeichnis "/home/hellberg/profi-tutorials/linux/netzwerke/" von dem Host "192.168.2.116" auf den lokalen Rechner in das Verzeichnis "/home/hellberg/" kopiert werden. Der auf dem Host verwendete Benutzer ist "hellberg".

Eingabe:

scp hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/netzwerke/netzwerkbefehle-anfaenger.txt /home/hellberg/

Ausgabe:
scp-host-lokal
Lokales Zielverzeichnis (ls -l /home/hellberg/):
scp-host-lokal-ls

Wichtige Optionen

Im Folgenden werden einige wichtige Optionen für den SCP-Befehl vorgestellt.

-3 - Kopieren zwischen zwei Hosts über den lokalen Rechner

Kopien zwischen zwei Remote-Maschinen bzw. Hosts werden standardmäßig direkt zwischen ihnen abgewickelt. Die Option -3 bewirkt, dass der Kopiervorgang über den lokalen Rechner stattfindet, dieser also als Zwischenstation dient.

scp -3 [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]

Das Aktivieren dieser Option führt zur Deaktivierung der Fortschrittsanzeige.

-l - Bandbreite limitieren

Teilweise ist es hilfreich, die maximal von dem Kopiervorgang verwendbare Bandbreite zu limitieren. Dies ist über die Option -l möglich. Die Bandbreite wird dabei in Kbit/s angegeben:

scp -l [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Beispiel: Bandbreite limitieren

Hier soll der wieder die Datei "befehl-scp.txt" aus dem Verzeichnis "/home/hellberg/" des lokalen Rechner in das Verzeichnis "/home/hellberg/profi-tutorials/linux/netzwerke/" des Host "192.168.2.116" kopiert werden. Die Bandbreite wird dabei mit der Option -l 30 auf 30KBit/s limitiert. Der auf dem Host verwendete Benutzer ist wieder "hellberg".

Eingabe:

scp -l 30 /home/hellberg/befehl-scp.txt hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/netzwerke/

Ausgabe (Vor Abschluss):

Der Kopiervorgang benötigt aufgrund der limitierten Bandbreite nun eine etwas längere Zeit. Es wird eine ETA (Estimated Time for Achievement) angezeigt, also die geschätzte Zeit bis zur Vollendung des Vorgangs. In diesem Fall ist diese noch nicht bestimmt worden.

scp-l-lokal-host-1
Ausgabe (Nach Abschluss):

Nach 8 Sekunden ist der Kopiervorgang schließlich abgeschlossen.

scp-l-lokal-host-2

-P - Port spezifizieren

Standardmäßig wird für SSH bzw. SCP der Port 22 verwendet. Mit der Option -P haben Sie jedoch auch die Möglichkeit, einen anderen Port für die Verbindung zu verwenden:

scp -P [Portnummer] [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]

-r - Rekursives Kopieren ganzer Verzeichnisse

Wenn Sie rekursiv ganze Verzeichnisse kopieren wollen, dann müssen Sie dazu die Option -r verwenden:

scp -r [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Beispiel: Rekursives Kopieren von Host auf Lokal

Hier soll der gesamte Inhalt des Verzeichnisses "/home/hellberg/profi-tutorials/linux/" von dem Host "192.168.2.116" auf den lokalen Rechner in das Verzeichnis "/home/hellberg/" kopiert werden. Der auf dem Host verwendete Benutzer ist "hellberg".

Eingabe:

scp -r hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/ /home/hellberg/

Ausgabe:
scp-r-host-lokal

-v - Debugging Nachrichten ausgeben

Die Option -v aktiviert die Ausgabe von Debugging Nachrichten von ssh und scp, welche bei der Fehlerbehebung der Verbindung, Authentifizierung und Konfiguration hilfreich sein können.

scp -v [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: