🔌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 ← →
💻 Laptop (lokal)🗄️ nas (entfernt)rsync (Client)= Sender💾 webseite/lokale Platte🔐 sshrsync --serverGeneratorentscheidetReceiverschreibt💾 /srv/daten/webseite/Platte des NAS
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.
ProzessAufgabepush: rsync lokal/ host:ziel/pull: rsync host:quelle/ lokal/
Senderliest die Quelldateien, schickt Dateiliste und Deltasbeim Hochladen (push) der lokale Clientbeim Herunterladen (pull) das entfernte rsync
Generatorvergleicht (Quick-Check), löscht bei --delete, schickt Blocksignaturenentferntlokal
Receiverbaut Dateien aus Basisblöcken + Literalen, benennt Temp-Datei umentferntlokal

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 rsync installiert sein, kein Dienst.
  • Rechte = die des SSH-Benutzers. Einschränken z. B. mit rrsync in authorized_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?
  • pfad ohne Doppelpunkt → lokal (Standard: --whole-file)
  • host:pfad → Remote-Shell, standardmäßig ssh
  • host::modul oder rsync://host/modul → Daemon auf Port 873
  • Ein Doppelpunkt nach einem Slash (./a:b) zählt nicht – so kopiert man Dateien mit „:“ im Namen.