SCP meistern: Dateien sicher zwischen lokalen und entfernten Hosts übertragen
Lernen Sie die SCP-Syntax für sicheres Hochladen, Herunterladen, rekursive Kopien, benutzerdefinierte SSH-Ports und die Beibehaltung von Dateiattributen.
SCP meistern: Dateien sicher zwischen lokalen und entfernten Hosts übertragen
scp kopiert Dateien zwischen Maschinen über SSH. Es ist nützlich, wenn Sie ein schnelles sicheres Hoch- oder Herunterladen benötigen und bereits SSH-Zugriff auf den Server haben.
Für große Synchronisationsaufgaben, unterbrochene Übertragungen oder wiederholte Bereitstellungen ist rsync in der Regel das bessere Werkzeug. Für einfache einmalige Kopien ist scp einfach und auf den meisten Unix-ähnlichen Systemen verfügbar.
Grundlegende Syntax
scp [OPTIONEN] QUELLE ZIEL
Lokale Pfade sehen aus wie normale Dateipfade. Entfernte Pfade verwenden diese Form:
[benutzer@]host:/pfad/zur/datei
Wenn Sie benutzer@ weglassen, verwendet scp Ihren lokalen Benutzernamen für den SSH-Login. Wenn der entfernte SSH-Server einen nicht standardmäßigen Port verwendet, übergeben Sie -P mit einem Großbuchstaben P. Kleinbuchstaben -p bedeuten, dass Dateiattribute beibehalten werden.
Eine Datei hochladen
Um eine lokale Datei auf einen entfernten Server zu kopieren:
scp local_report.txt [email protected]:/home/remote_user/documents/
Dies sendet local_report.txt aus Ihrem aktuellen Verzeichnis in das entfernte documents-Verzeichnis.
Um die Datei während des Uploads umzubenennen, fügen Sie den Ziel-Dateinamen hinzu:
scp local_report.txt [email protected]:/home/remote_user/documents/report-2026.txt
Eine Datei herunterladen
Um eine entfernte Datei in Ihr aktuelles lokales Verzeichnis zu kopieren:
scp [email protected]:~/server_log.tar.gz .
Um sie unter einem anderen lokalen Namen zu speichern:
scp [email protected]:~/server_log.tar.gz ./prod-server-log.tar.gz
Ein Verzeichnis rekursiv kopieren
Verwenden Sie -r, um eine Verzeichnisstruktur zu kopieren:
scp -r local_project_folder [email protected]:/var/www/
Dies kopiert das Verzeichnis und seinen Inhalt an das Ziel. Beachten Sie, dass scp -r symbolischen Links folgt, auf die es während der Durchquerung stößt, was mehr Daten kopieren kann als erwartet.
Einen benutzerdefinierten SSH-Port verwenden
Wenn SSH auf Port 2222 lauscht, verwenden Sie Großbuchstaben -P:
scp -P 2222 local_config.ini [email protected]:/tmp/
Sie können den Port auch in Ihrer SSH-Konfiguration angeben und dann den Host-Alias verwenden:
Host prod-web
HostName remote.example.com
User user
Port 2222
Dann:
scp local_config.ini prod-web:/tmp/
Zeiten und Modi beibehalten
Verwenden Sie Kleinbuchstaben -p, um Änderungszeiten, Zugriffszeiten und Dateimodusbits von der Quelle beizubehalten:
scp -p important_script.sh user@server:/tmp/
Der Besitz wird im Allgemeinen nicht so beibehalten wie bei Archivierungswerkzeugen. Wenn der Besitz wichtig ist, setzen Sie ihn nach der Übertragung oder verwenden Sie einen Bereitstellungsprozess, der für diese Anforderung ausgelegt ist.
Fehlerbehebung mit ausführlichem Modus
Verwenden Sie -v, um SSH-Verbindungsdetails anzuzeigen:
scp -v large_backup.zip user@server:/backups/
Die ausführliche Ausgabe hilft bei der Diagnose von Authentifizierungsfehlern, SSH-Konfigurationsproblemen, Host-Key-Problemen und unerwarteten Ports.
Komprimierung aktivieren, wenn sie hilft
-C leitet SSH-Komprimierung an die Verbindung weiter:
scp -C logs.txt user@server:/tmp/
Komprimierung kann bei langsameren Verbindungen mit textlastigen Daten helfen. Sie hilft möglicherweise nicht viel bei bereits komprimierten Dateien wie .zip, .gz, .jpg oder .mp4.
Zwischen zwei entfernten Hosts kopieren
Sie können scp mit zwei entfernten Pfaden verwenden:
scp user_a@server_alpha:/data/db.sql user_b@server_beta:/backup/
Im aktuellen OpenSSH scp werden entfernt-zu-entfernt-Kopien standardmäßig über Ihren lokalen Rechner übertragen. Verwenden Sie -R nur, wenn Sie absichtlich möchten, dass der Ursprungshost eine direkte Verbindung zum Zielhost herstellt:
scp -R user_a@server_alpha:/data/db.sql user_b@server_beta:/backup/
Mit -R muss der Ursprungshost in der Lage sein, sich ohne Passwortabfrage beim Ziel zu authentifizieren.
Häufige Fehler vermeiden
Setzen Sie entfernte Pfade, die Leerzeichen enthalten, in Anführungszeichen:
scp "local file.txt" 'user@server:/tmp/local file.txt'
Verwenden Sie absolute oder klar relative lokale Pfade, wenn ein lokaler Dateiname einen Doppelpunkt enthält, da scp host:path als entfernten Pfad behandelt:
scp ./report:final.txt user@server:/tmp/
Überprüfen Sie die Zielpfade doppelt, bevor Sie als root oder in Systemverzeichnisse kopieren. scp überschreibt eine vorhandene Zieldatei im normalen Gebrauch ohne Nachfrage.
SCP oder Rsync?
Verwenden Sie scp für einfache sichere Kopien:
- Eine Datei hochladen.
- Ein Archiv herunterladen.
- Ein kleines Verzeichnis einmal kopieren.
- Daten durch eine SSH-only-Umgebung verschieben.
Verwenden Sie rsync, wenn Sie fortsetzbare Übertragungen, effiziente wiederholte Synchronisationen, Löschbehandlung, Ausschlussmuster, Prüfsummen oder bessere Fortschrittskontrollen benötigen.
Fazit
Verwenden Sie scp quelle ziel für schnelle SSH-basierte Dateiübertragungen. Fügen Sie -r für Verzeichnisse, -P für einen benutzerdefinierten SSH-Port, -p zum Beibehalten von Zeiten und Modi und -v hinzu, wenn Sie die SSH-Verbindung debuggen müssen.