Verschlüsselter Datentransfer mit SCP

Da scp zu Beginn eines Datentransfers eine Verbindung mit SSH aufbaut, gelten die meisten, im vorherigen Kapitel beschriebenen, Optionen von SSH auch für scp. Bei scp handelt es sich jedoch in erster Linie um ein Dateitransferprogramm. Dadurch hat dieses Programm noch weitere spezifische Ausführungsoptionen.

Transferlimit setzen

Startet man einen Dateitransfer mit scp, so versucht scp das gesamte Datentransfervolumen zu belegen. Oft will man jedoch nicht die ganze Bandbreite für einen Datentransfer ausschöpfen und möchte scp daher anweisen, nur einen bestimmten Anteil der Bandbreite zu nutzen. Diese Einstellung kann man mit Hilfe des Schalters -l gefolgt von einem Zahlenwert, der die Bandbreite in kbits/sec festlegt, vornehmen.

scp -l Anzahl_kbits_sec Name_des_SSH_Servers:Pfad_der_Quelldatei Pfad_der_Zieldatei

Verzeichnisse inklusive Inhalt kopieren

Mit scp können nicht nur einzelne Dateien, sondern auch ganze Verzeichnisse kopiert werden. Möchte man jedoch ein ganzes Verzeichnis kopieren, so muss scp mit dem Schalter -r gestartet werden. Anschließend kopiert scp die Inhalte des Verzeichnisses rekursiv über das Netzwerk.

scp -r Name_des_SSH_Servers:Pfad_des_Quellverzeichnisses Pfad_des_Zielverzeichnisses

Abgebrochenen Dateitransfer fortsetzen

In der Praxis passiert es immer wieder, dass ein Datentransfer aufgrund eines Verbindungsproblems abgebrochen wird, bevor die Daten komplett übertragen worden sind. Scp bietet leider keine Möglichkeit einen abgebrochenen Datentransfer fortzusetzen. Man ist also gezwungen, den Transfer neu zu starten. Da dieser Umstand nicht benutzerfreundlich ist, wird an dieser Stelle ein Workaround vorgestellt, mit dem man abgebrochene Datenübertragungen fortsetzen kann.

Mit Hilfe des Programms rsync, das unter den meisten Unix-Derivaten zur Standardausstattung gehört, ist es möglich einen scp Datentransfer an der Stelle fort zu setzen, an der er abgebrochen wurde.

rsync --partial --progress Name_des_SSH_Servers:Pfad_der_Quelldatei Pfad_der_Zieldatei

Dieses Verfahren hat jedoch einen großen Nachteil. Rsync bietet standardmäßig keinerlei Sicherheitsfeatures. Die Daten werden also unverschlüsselt über das Netzwerk gesendet. Mit einem einfachen Parameter bringt man rsync jedoch dazu, SSH als sogenannte Remoteshell zu benutzen, wodurch der Datentransfer auf gewohnte Weise mit Hilfe von SSH verschlüsselt wird.

rsync --partial --progress --rsh=ssh Name_des_SSH_Servers:Pfad_der_Quelldatei Pfad_der_Zieldatei

Abbildung 8.1: Fortsetzen eines abgebrochenen Datentransfers mit rsync.
Image abbildung_rsync