# scp — Dateien sicher über SSH kopieren

> Praxis-Guide zu scp und sftp — Dateien sicher per SSH zwischen lokalem Rechner und Remote-Host übertragen, mit rekursiven Transfers und Schlüssel-Auth.

Source: https://www.jpkc.com/db/cheatsheets/networking/scp/

<!-- PROSE:intro -->
scp kopiert Dateien zwischen lokalem Rechner und Remote-Host direkt über eine SSH-Verbindung – kein separates Protokoll, keine zusätzliche Software nötig. Du gibst Quelle und Ziel in vertrauter cp-Syntax an; die Verschlüsselung übernimmt SSH im Hintergrund. Für größere Datenmengen oder inkrementelle Transfers lohnt sich ein Blick auf rsync; für interaktives Browsen auf dem Server bringt sftp eine FTP-ähnliche Sitzung.
<!-- PROSE:intro:end -->

## scp — Auf den Remote-Host kopieren

`scp <file> <user>@<host>:<path>` — Kopiert eine lokale Datei auf einen Remote-Host.

```bash
scp config.yaml admin@server:/etc/app/
```

`scp -r <dir> <user>@<host>:<path>` — Kopiert ein Verzeichnis rekursiv auf den Remote-Host.

```bash
scp -r ./dist/ deploy@server:/var/www/html/
```

`scp -P <port> <file> <user>@<host>:<path>` — Kopiert über einen benutzerdefinierten SSH-Port.

```bash
scp -P 2222 backup.tar.gz admin@server:/backups/
```

`scp -i <key> <file> <user>@<host>:<path>` — Kopiert mit einem bestimmten SSH-Schlüssel.

```bash
scp -i ~/.ssh/deploy_key app.tar.gz deploy@server:/opt/
```

## scp — Vom Remote-Host kopieren

`scp <user>@<host>:<path> <local>` — Kopiert eine Datei vom Remote-Host auf den lokalen Rechner.

```bash
scp admin@server:/var/log/app.log ./logs/
```

`scp -r <user>@<host>:<path> <local>` — Kopiert ein Verzeichnis rekursiv vom Remote-Host.

```bash
scp -r admin@server:/etc/nginx/ ./nginx-backup/
```

`scp <user>@<host1>:<path> <user>@<host2>:<path>` — Kopiert direkt zwischen zwei Remote-Hosts.

```bash
scp admin@server1:/data/dump.sql admin@server2:/data/
```

## scp — Optionen

`scp -C <file> <user>@<host>:<path>` — Aktiviert Komprimierung während der Übertragung.

```bash
scp -C largefile.sql admin@server:/tmp/
```

`scp -l <kbit/s> <file> <user>@<host>:<path>` — Begrenzt die Bandbreite (in Kbit/s).

```bash
scp -l 5000 backup.tar.gz admin@server:/backups/
```

`scp -p <file> <user>@<host>:<path>` — Behält Zeitstempel und Berechtigungen der Datei bei.

```bash
scp -p important.conf admin@server:/etc/app/
```

`scp -q <file> <user>@<host>:<path>` — Stiller Modus: unterdrückt die Fortschrittsanzeige.

```bash
scp -q script.sh admin@server:/usr/local/bin/
```

## sftp — Interaktive Sitzung

`sftp <user>@<host>` — Startet eine interaktive SFTP-Sitzung.

```bash
sftp admin@server
```

`get <remote-file>` — Lädt eine Datei herunter (innerhalb der sftp-Sitzung).

```bash
sftp> get /var/log/app.log
```

`put <local-file>` — Lädt eine Datei hoch (innerhalb der sftp-Sitzung).

```bash
sftp> put config.yaml /etc/app/
```

`mget <pattern>` — Lädt mehrere Dateien herunter, die einem Muster entsprechen.

```bash
sftp> mget *.log
```

`mput <pattern>` — Lädt mehrere Dateien hoch, die einem Muster entsprechen.

```bash
sftp> mput *.conf
```

`ls` — Listet den Inhalt des Remote-Verzeichnisses auf.

```bash
sftp> ls -la
```

`lls` — Listet den Inhalt des lokalen Verzeichnisses auf.

```bash
sftp> lls
```

## sftp — Batch-Modus

`sftp -b <batchfile> <user>@<host>` — Führt SFTP-Befehle aus einer Batch-Datei aus.

```bash
sftp -b commands.txt admin@server
```

`sftp -P <port> <user>@<host>` — Verbindet über einen benutzerdefinierten SSH-Port.

```bash
sftp -P 2222 admin@server
```

`sftp -i <key> <user>@<host>` — Verbindet mit einem bestimmten SSH-Schlüssel.

```bash
sftp -i ~/.ssh/deploy_key deploy@server
```

<!-- PROSE:outro -->
## Fazit

scp erledigt schnelle Einzel-Transfers zuverlässig und ohne Konfigurationsaufwand – solange SSH erreichbar ist, hast du ein sicheres Kopierwerkzeug zur Hand. Für wiederkehrende oder bandbreitenoptimierte Übertragungen ist `rsync` die bessere Wahl; für interaktive Sitzungen greifst du auf `sftp` zurück. Mit einem passenden SSH-Schlüssel entfällt die Passworteingabe komplett.

## Weiterführende Links

- [Secure Copy – Wikipedia](https://de.wikipedia.org/wiki/Secure_Copy) – Hintergrund und Geschichte
- [scp(1) – OpenSSH Manpage](https://man.openbsd.org/scp) – alle Optionen im Überblick (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [ssh](https://www.jpkc.com/db/cheatsheets/networking/ssh/) – Remote-Verbindung per SSH – die Basis, auf der scp aufbaut
- [ssh-keygen](https://www.jpkc.com/db/cheatsheets/networking/ssh-keygen/) – SSH-Schlüsselpaar erstellen für passwortlose scp-Transfers
- [mosh](https://www.jpkc.com/db/cheatsheets/networking/mosh/) – robuste SSH-Alternative für instabile Verbindungen

