rsync (Remote Sync) synchronisiert Dateien und Verzeichnisse — lokal oder über eine SSH-Verbindung. Seine Stärke ist die Delta-Übertragung: rsync vergleicht Quelle und Ziel und überträgt nur die Teile, die sich geändert haben. Nach dem ersten Lauf sind Sicherungen dadurch extrem schnell — das unterscheidet rsync vom Einmal-Kopieren mit scp.
Grundform
rsync -avz quelle/ ziel/
rsync -avz /home/benutzer/www/ Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. :/backup/www/
rsync -avz Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. :/backup/www/ /home/benutzer/wiederherstellung/
Die erste Zeile synchronisiert lokal, die zweite hoch, die dritte herunter. Ohne SSH-Angabe (kein benutzer@host:) arbeitet rsync rein lokal.
Die Standard-Optionen
-a(Archive) — erhält Rechte, Zeiten, Links und mehr; entspricht-rlptgoD. Die Grundlage fast jedes rsync-Aufrufs.-v— ausführliche Ausgabe;-z— komprimieren;-h— menschenlesbare Größen.-n(Dry-Run) — zeigt ohne Änderungen, was passieren würde; immer vor--deletetesten.--delete— löscht am Ziel, was an der Quelle fehlt (exakte Spiegelung — Vorsicht!).--progress— Fortschrittsanzeige;--stats— Zusammenfassung am Ende.-e sshbzw.-e 'ssh -p 2222'— Remote-Shell und SSH-Port festlegen (bei nicht standardmäßigen Ports).--exclude='*.tmp'— bestimmte Muster auslassen; mehrfach angeben.
Schrägstrich-Falle
Ein abschließender Schrägstrich bei quelle/ bedeutet „der Inhalt des Ordners“, ohne Schrägstrich wird der Ordner selbst ins Ziel gelegt. Das ist die häufigste rsync-Falle und entscheidet, ob ziel die Dateien direkt oder in einem Unterordner erhält.
Inkrementelle Sicherungen mit --link-dest
rsync -av --link-dest=/backup/vortag/ /home/benutzer/www/ /backup/heute/
Mit --link-dest legt rsync unveränderte Dateien als Hardlinks auf eine frühere Sicherung — es entsteht eine vollständige Sicherung, die aber kaum zusätzlichen Speicher verbraucht. So baut man einfache tägliche Backup-Rotationen auf.
Verwandte Grundlagen: ssh, scp und rsync im Überblick, sftp-Befehle, SSH-Schlüssel.
scp (Secure Copy) kopiert Dateien zwischen zwei Rechnern über eine SSH-Verbindung — verschlüsselt und mit derselben Authentifizierung wie ssh. Der Einzeiler ist ideal für schnelle, einmalige Transfers; wer regelmäßig synchronisiert, nutzt besser rsync oder die interaktive sftp-Shell.
Grundform
scp datei.txt Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. :/home/benutzer/
scp Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. :/pfad/datei.txt .
scp -r ordner/ Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. :/ziel/
Die erste Zeile lädt eine Datei hoch, die zweite lädt sie herunter (das Ziel . ist das aktuelle lokale Verzeichnis). -r kopiert ganze Verzeichnisse rekursiv. Die Quell- und Zielangaben folgen dem Muster benutzer@host:/pfad; ohne Doppelpunkt ist die Angabe ein lokaler Pfad.
Wichtige Optionen
-P 2222— großes P: SSH-Port des entfernten Rechners (Standard 22).-p— kleines p: Zeitstempel (Modifikationszeit, Zugriffszeit) und Rechte erhalten.-i ~/.ssh/id_ed25519— bestimmten SSH-Schlüssel verwenden.-C— Kompression aktivieren (sinnvoll bei langsamen Verbindungen).-q— Fortschrittsanzeige und Warnungen unterdrücken.-3— Transfer zwischen zwei entfernten Rechnern über den lokalen Rechner umleiten.
Modernes scp: SFTP-Protokoll statt SCP
Seit OpenSSH 9.0 (2022) nutzt der scp-Client für die Übertragung standardmäßig das SFTP-Protokoll statt des alten SCP/RCP-Protokolls. Das alte Protokoll war anfällig für Fehlinterpretationen von Dateinamen mit Sonderzeichen. Nur wer das Legacy-Verhalten zwingend braucht, setzt -O ein — etwa bei sehr alten Servern ohne SFTP-Subsystem.
Fallen
- -P vs. -p: Bei scp ist der Port ein großes
-P, die Zeiterhaltung ein kleines-p— genau umgekehrt zur intuition der meisten Kommandos. - Wildcards wie
*werden lokal von der Shell aufgelöst; entfernte Wildcards müssen gequotet werden:scp benutzer@host:'/pfad/*.log' . - Wer dieselben Dateien mehrfach überträgt oder spiegeln will, ist mit rsync besser beraten — es überträgt nur geänderte Teile.
Verwandte Grundlagen: ssh, scp und rsync im Überblick, SSH-Schlüssel, ssh-config.
sftp (SSH File Transfer Protocol) ist ein interaktives Werkzeug zum Übertragen und Verwalten von Dateien über eine verschlüsselte SSH-Verbindung. Anders als beim Einzeiler scp startet sftp eine Shell, in der man mit Kommandos navigiert, hoch- und herunterlädt — ähnlich wie beim klassischen FTP, nur vollständig verschlüsselt über Port 22.
Verbindung herstellen
sftp Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
sftp -P 2222 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
sftp -i ~/.ssh/id_ed25519 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
Wie bei scp ist der Port ein großes -P, die Identitätsdatei wird mit -i gewählt. Nach dem Login erscheint die Eingabeaufforderung sftp>.
Die wichtigsten interaktiven Kommandos
ls,cd,pwd— entferntes Verzeichnis ansehen und wechseln.lls,lcd,lpwd— dieselben Aktionen im lokalen Verzeichnis (Präfixl).get datei— Datei vom Server herunterladen;get -r ordnerrekursiv,get -a dateihängt eine unterbrochene Übertragung an.put datei— Datei hochladen;put -r ordnerrekursiv.rm datei,mkdir ordner,rmdir ordner,chmod 600 datei,rename alt neu— Dateien entfernt verwalten.!— eine lokale Shell starten,byeoderexitbeendet sftp.
Batch-Modus für Skripte
sftp -b uebung.txt Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
Mit -b datei liest sftp die Kommandos zeilenweise aus einer Batch-Datei statt interaktiv — praktisch für automatisierte Transfers. Bricht ein Kommando in der Batch-Datei mit einem Fehler ab, beendet sich sftp standardmäßig; das optionale -B puffer setzt nur die Puffergröße für die Übertragung und beeinflusst dieses Verhalten nicht. Für robuste Skripte sollte die Batch-Datei daher nur Kommandos enthalten, die mit Sicherheit gelingen, oder der Aufruf pro Datei erfolgen.
SFTP, FTPS und FTP
SFTP läuft als Subsystem über SSH (Port 22) und verschlüsselt alles. Davon zu unterscheiden sind das unverschlüsselte FTP und FTPS (FTP über TLS). Viele moderne scp-Aufrufe nutzen intern ohnehin das SFTP-Protokoll — siehe scp-Befehle.
Verwandte Grundlagen: ssh, scp und rsync im Überblick, rsync-Befehle, SSH-Schlüssel.
~/.ssh/known_hosts (kurz known_hosts) speichert die Host-Schlüssel aller SSH-Server, mit denen sich der Client bereits verbunden hat. Beim ersten Kontakt merkt sich OpenSSH den Fingerabdruck; bei späteren Verbindungen vergleicht es ihn — weicht er ab, bricht die Verbindung mit HOST KEY VERIFICATION FAILED ab (Schutz vor Man-in-the-Middle-Angriffen).
Warum Host-Key-Prüfung?
Jeder SSH-Server besitzt einen eindeutigen Host-Schlüssel. Ohne Prüfung könnte ein Angreifer die Verbindung abfangen und sich als Server ausgeben. known_hosts macht den ersten Kontakt prüfbar: Der Client fragt bei unbekanntem Host nach (Fingerabdruck anzeigen und bestätigen).
Aufbau und Einträge
server.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...
Pro Zeile stehen Hostname (oder IP), Schlüsseltyp und der öffentliche Schlüssel. Zusätzlich wird ein @cert-authority-Eintrag für von einer Zertifizierungsstelle signierte Schlüssel unterstützt. Die globale Variante /etc/ssh/ssh_known_hosts gilt für alle Benutzer.
Verwalten
ssh-keyscan server.example.com >> ~/.ssh/known_hosts— Host-Schlüssel automatisch eintragen.ssh-keygen -R server.example.com— bekannten Eintrag entfernen (z.B. nach Neuinstallation des Servers).StrictHostKeyChecking noin der ssh-config deaktiviert die Prüfung — nur für Testumgebungen, in Produktion ein Sicherheitsrisiko.
Sicherheit
Beim ersten Verbinden den angezeigten Fingerabdruck über einen vertrauenswürdigen Kanal verifizieren. ssh-keyscan sammelt die Schlüssel zwar automatisch, doch der erste Abruf selbst ist nicht gegen Manipulation geschützt — die erhaltenen Schlüssel sollten vor dem Vertrauen geprüft werden.
Verwandte Grundlagen: SSH, ssh-keygen, ssh-keyscan, authorized_keys und sshd.
ssh-keyscan sammelt die öffentlichen Host-Schlüssel eines SSH-Servers, ohne sich anzumelden — die Grundlage, um known_hosts automatisch zu befüllen. Es gehört zum OpenSSH-Paket und wird häufig in Skripten und Automatisierungen genutzt.
Grundbefehl
ssh-keyscan server.example.com
Der Befehl verbindet sich zum SSH-Port (Standard 22) und gibt die gefundenen Schlüssel im known_hosts-Format aus. Mehrere Hosts sind möglich: ssh-keyscan host1 host2. Mit -p 2222 lässt sich ein abweichender Port angeben.
Typische Verwendung
ssh-keyscan server.example.com >> ~/.ssh/known_hosts
So lässt sich die Host-Key-Abfrage beim ersten Verbinden überspringen — praktisch für Skripte, CI-Pipelines und die Einrichtung vieler Rechner. Mit -H werden Einträge gehasht gespeichert (Standard bei neueren OpenSSH-Versionen).
Sicherheit
- TOFU-Problem: Beim allerersten Abruf kennt der Client den Server noch nicht — ein Angreifer könnte sich einschleichen. Die gesammelten Schlüssel daher über einen vertrauenswürdigen Kanal verifizieren, bevor man ihnen vertraut.
- Mit
StrictHostKeyCheckinglässt sich steuern, wie der Client mit unbekannten oder geänderten Schlüsseln umgeht — in Produktion immeryes(bzw.accept-newnur für neue Einträge). - Alternativ zu
known_hostswerden die authorized_keys des Servers gepflegt — dort stehen die Schlüssel der Benutzer, nicht die des Servers.
Verwandte Grundlagen: SSH, ssh-keygen, known_hosts und authorized_keys.