Dateien über SSH kopieren mit rsync: Schnell, sicher, wiederaufnehmbar
rsync ist das Schweizer Taschenmesser für Dateiübertragungen unter Linux und macOS. Im Gegensatz zu scp überträgt rsync nur geänderte Teile von Dateien, prüft die Integrität, kann Übertragungen fortsetzen und zeigt einen Fortschrittsbalken. Über SSH läuft rsync verschlüsselt und benötigt keinen zusätzlichen Dienst auf dem Zielserver.
Grundlegender rsync-Befehl über SSH
Der empfohlene Befehl für robuste, verschlüsselte Übertragungen mit Fortschrittsanzeige:
rsync -chavzP --stats user@server:/pfad/auf/server /lokaler/pfad/
Die Optionen im Detail: -c prüft Dateien per Checksum statt nur Datum/Größe. -h gibt Größen menschenlesbar aus. -a aktiviert Archiv-Modus (Berechtigungen, Symlinks, Zeitstempel erhalten). -v zeigt übertragene Dateien an. -z komprimiert Daten während der Übertragung. -P zeigt Fortschritt und ermöglicht das Fortsetzen unterbrochener Übertragungen. --stats zeigt eine Zusammenfassung am Ende.
Vom Server auf die lokale Maschine kopieren
# Verzeichnis vom Server lokal sichern
rsync -chavzP --stats [email protected]:/var/www/html/ /backup/webroot/
# Einzelne Datei herunterladen
rsync -chavzP user@server:/etc/nginx/nginx.conf ./nginx.conf.bak
Von der lokalen Maschine auf den Server laden
# Lokales Verzeichnis auf Server hochladen
rsync -chavzP --stats /lokaler/pfad/ user@server:/ziel/pfad/
# Nur bestimmte Dateitypen übertragen
rsync -chavzP --include="*.php" --include="*.css" --exclude="*" /src/ user@server:/var/www/
Dateien löschen, die auf der Quelle nicht mehr existieren
Für echte Spiegelung (Mirror) – Dateien, die auf der Quelle gelöscht wurden, werden auch auf dem Ziel entfernt:
rsync -chavzP --delete user@server:/var/www/ /backup/webroot/
Alternativen SSH-Port und SSH-Key angeben
# Nicht-Standardport (z.B. 2222)
rsync -chavzP -e "ssh -p 2222" user@server:/pfad/ /lokal/
# Bestimmten SSH-Key verwenden
rsync -chavzP -e "ssh -i ~/.ssh/mein_key" user@server:/pfad/ /lokal/
Trockenlauf vor dem echten Transfer
Mit --dry-run lässt sich simulieren, was rsync tun würde – ohne tatsächlich Dateien zu übertragen:
rsync -chavzP --dry-run --delete user@server:/var/www/ /backup/webroot/
Regelmäßiges Backup per Cronjob
# In crontab -e eintragen: täglich um 2:00 Uhr
0 2 * * * rsync -chavzP --stats user@server:/var/www/ /backup/webroot/ >> /var/log/rsync_backup.log 2>&1
Wer Server-Shares dauerhaft einbinden möchte, findet im Beitrag SSHFS Server Shares eine elegante Alternative. Für komplette Server-Backups ist der Beitrag Linux Server Backup empfehlenswert. Weitere Linux-Tipps gibt es in der Kategorie Linux & Server.


