SSH rsync

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Einführung in rsync

rsync ist ein Werkzeug zum Kopieren und Synchronisieren von Dateien – lokal oder über das Netzwerk. Im Gegensatz zu cp überträgt rsync bei wiederholten Läufen nur die Unterschiede, was es deutlich schneller macht.

Die grundlegende Syntax lautet:

rsync [Optionen] Quelle Ziel

Typische Optionen

Option Bedeutung
-a Archivmodus – erhält Rechte, Timestamps, Symlinks und Eigentümer
-v Verbose – zeigt alle übertragenen Dateien an
-z Komprimierung während der Übertragung (sinnvoll bei langsamen Verbindungen)
-x Nicht über Dateisystemgrenzen hinausgehen
-P Fortschrittsanzeige und Resume bei abgebrochenem Transfer
--delete Löscht im Ziel Dateien, die in der Quelle nicht mehr vorhanden sind

Zusammen ergibt sich ein typischer Befehl für die Netzwerkübertragung:

rsync -avzxP --delete user@server:/quelle/ /ziel/

Nur Änderungen werden übertragen

rsync vergleicht Quelle und Ziel anhand von Dateigröße und Timestamp. Nur Dateien die neu sind oder sich geändert haben werden übertragen. Das macht rsync besonders effizient für regelmäßige Backups oder Synchronisierungen – beim zweiten Lauf werden meist nur ein Bruchteil der Daten übertragen.

Beim ersten Lauf werden alle Dateien übertragen:

rsync -avzP user@server:/backup/ /mnt/backup/
sending incremental file list
dokumente/bericht.pdf
dokumente/praesentation.pptx
fotos/urlaub.jpg

sent 500MB in 2:10

Beim zweiten Lauf – ohne Änderungen – passiert fast nichts:

rsync -avzP user@server:/backup/ /mnt/backup/
sending incremental file list

sent 1.2KB in 0:01

Übertragung über das Netzwerk mit SSH

rsync nutzt für die Netzwerkübertragung standardmäßig SSH. Die Syntax unterscheidet sich vom lokalen Kopieren nur durch die Angabe von Benutzer und Zielrechner.

Vom lokalen Rechner auf einen Server:

rsync -avzP /home/user/dokumente/ user@server:/backup/dokumente/

Vom Server auf den lokalen Rechner:

rsync -avzP user@server:/backup/dokumente/ /home/user/dokumente/

Mit --delete wird das Ziel zum exakten Spiegelbild der Quelle – Dateien die in der Quelle gelöscht wurden, werden auch im Ziel entfernt:

rsync -avzP --delete user@server:/backup/dokumente/ /home/user/dokumente/

Anderen SSH-Port verwenden

Läuft SSH nicht auf Port 22, wird mit -e der SSH-Aufruf angepasst:

rsync -avzP -e "ssh -p 2222" user@server:/backup/ /mnt/backup/

Mit -e lassen sich auch weitere SSH-Optionen übergeben, zum Beispiel ein abweichendes Identity-File:

rsync -avzP -e "ssh -p 2222 -i ~/.ssh/mein_schluessel" user@server:/backup/ /mnt/backup/