🔌Eine rsync-Sitzung über SSH
Von rsync -avz --delete webseite/ user@nas:/srv/daten/webseite/ bis zur Zusammenfassung: welche Prozesse laufen wo, was geht über die Leitung und wann wird gelöscht? Die Terminalausgaben und Zahlen stammen aus einem echten Lauf von rsync 3.5.0 mit denselben Beispieldateien.
🐞Schritt-Debugger
Schritt 1 / 12 · Tasten ← →
StartSchritt 1
Befehl eingeben
Der lokale rsync-Client liest die Optionen. -a = -rlptgoD, -v = ausführlich, -z = komprimieren, --delete = Überzähliges beim Ziel löschen. Das Ziel user@nas:/srv/… enthält einen einfachen Doppelpunkt → Transport über eine Remote-Shell (SSH). Die Quelle endet mit / → der Inhalt von webseite wird kopiert.
Quelle (lokal)
webseite/ ├── bericht.txt 20011 Byte (heute geändert) ├── index.html 149 Byte (unverändert) └── neu.css 57 Byte (neu)
Terminal – Laptop
$ rsync -avz --delete webseite/ user@nas:/srv/daten/webseite/
🗄️ Ziel auf dem NAS
- alt.log16 Bgleich
- bericht.txt20000 Bgleich
- index.html149 Bgleich
👥Drei Rollen – egal, wer wo läuft
Welche Seite Sender ist, hängt nur von der Richtung ab. Generator und Receiver laufen immer auf der Zielseite.
| Prozess | Aufgabe | push: rsync lokal/ host:ziel/ | pull: rsync host:quelle/ lokal/ |
|---|---|---|---|
| Sender | liest die Quelldateien, schickt Dateiliste und Deltas | beim Hochladen (push) der lokale Client | beim Herunterladen (pull) das entfernte rsync |
| Generator | vergleicht (Quick-Check), löscht bei --delete, schickt Blocksignaturen | entfernt | lokal |
| Receiver | baut Dateien aus Basisblöcken + Literalen, benennt Temp-Datei um | entfernt | lokal |
Beim Pull startet der Client auf der Gegenseite rsync --server --sender … – das zusätzliche--sender macht die entfernte Seite zum Sender.
🔐rsync über SSH oder rsync-Daemon?
🔐 Remote-Shell (SSH) – ein Doppelpunkt
rsync -az quelle/ user@nas:/srv/daten/ rsync -az -e "ssh -p 2222 -i ~/.ssh/backup_ed25519" quelle/ user@nas:/srv/daten/
- SSH authentifiziert und verschlüsselt – der sichere Standard.
- Auf der Gegenseite muss nur das Programm
rsyncinstalliert sein, kein Dienst. - Rechte = die des SSH-Benutzers. Einschränken z. B. mit
rrsyncinauthorized_keys.
🛰️ rsync-Daemon – zwei Doppelpunkte oder rsync://
rsync -av quelle/ backup.example.org::daten/ rsync -av rsync://backup.example.org/daten/ ziel/ rsync backup.example.org:: # Module auflisten
- Eigener Dienst auf TCP-Port 873, freigegeben werden Module aus
rsyncd.conf. - Unverschlüsselt, Authentifizierung vergleichsweise schwach – nur im vertrauenswürdigen Netz, sonst über SSH tunneln oder
rsync-ssl. - Praktisch für NAS-Geräte und öffentliche Spiegelserver (nur lesend).
/etc/rsyncd.conf (Beispiel)
uid = nobody
gid = nogroup
use chroot = yes
max connections = 4
log file = /var/log/rsyncd.log
[daten]
path = /srv/daten
comment = Datensicherung
read only = no
auth users = backup
secrets file = /etc/rsyncd.secrets # Zeilen "backup:<PASSWORT>", Modus 600
hosts allow = 192.0.2.0/24💡 Woran erkennt rsync den Transport?
pfadohne Doppelpunkt → lokal (Standard:--whole-file)host:pfad→ Remote-Shell, standardmäßig sshhost::moduloderrsync://host/modul→ Daemon auf Port 873- Ein Doppelpunkt nach einem Slash (
./a:b) zählt nicht – so kopiert man Dateien mit „:“ im Namen.