Wie kann ich einen Rsync-Dienst unter Windows als Hintergrundprozess starten?
- Rsync über Cygwin als Dienst starten
- Rsync unter Windows Subsystem for Linux (WSL) im Hintergrund starten
- Rsync als Windows-Dienst mit Drittanbieter-Tools einrichten
- Fazit
Rsync ist ein bekanntes Tool zur Datei- und Verzeichnissynchronisierung, das ursprünglich für Unix-Systeme entwickelt wurde. Unter Windows kann man Rsync beispielsweise mit Hilfe von Cygwin, Windows Subsystem for Linux (WSL) oder speziellen Rsync-Portierungen verwenden. Um Rsync als Dienst im Hintergrund laufen zu lassen, gibt es einige Vorgehensweisen, die sich je nach eingesetzter Variante unterscheiden.
Rsync über Cygwin als Dienst starten
Wenn Rsync über Cygwin installiert wurde, kann man den Rsync-Server als Windows-Dienst einrichten. Dazu wird typischerweise das mit Cygwin mitgelieferte Tool cygrunsrv verwendet, um den Rsync-Daemon als Service zu registrieren und zu starten. Zunächst muss sichergestellt werden, dass Rsync als Daemon (mit der Option --daemon) korrekt konfiguriert ist und eine passende rsyncd.conf Konfigurationsdatei vorliegt.
Anschließend öffnet man eine administrativ gestartete Eingabeaufforderung und registriert den Dienst mit einem Befehl wie:
cygrunsrv -I rsyncd -p /usr/bin/rsync.exe -a "--daemon --config=/etc/rsyncd.conf"
Das Flag -I installiert den Dienst mit Namen rsyncd. Der Parameter -p gibt den Pfad zur ausführbaren Datei an, während -a die Argumente übergibt. Danach startet man den Dienst mit:
cygrunsrv -S rsyncd
Sobald der Dienst läuft, arbeitet Rsync im Hintergrund und wartet auf Verbindungen. Frontend-Programme oder andere Systeme können sich jetzt mit dem Rsync-Daemon verbinden, um Synchronisationen durchzuführen.
Rsync unter Windows Subsystem for Linux (WSL) im Hintergrund starten
Wenn Rsync unter WSL betrieben wird, existiert kein native Windows-Dienst. Hier kann man Rsync jedoch innerhalb der WSL-Umgebung als Daemon starten und durch verschiedene Mechanismen im Hintergrund halten. Ein einfacher Weg ist, einen Rsync-Daemon-Prozess in einer WSL-Shell über nohup oder screen zu starten.
Beispielsweise kann man folgenden Befehl ausführen:
nohup rsync --daemon --config=/etc/rsyncd.conf &
Dies startet Rsync als Hintergrundprozess, wobei nohup dafür sorgt, dass der Prozess beim Schließen der Shell erhalten bleibt. Alternativ bieten sich auch WSL-spezifische Init-Systeme oder manuell erstellte Skripte an, die beim Hochfahren der WSL-Distribution ausgeführt werden.
Wenn man möchte, dass der Dienst auch beim Windows-Start automatisch läuft, kann man ein geplantes Task im Windows Task Scheduler anlegen, der die WSL-Distribution startet und darin den Rsync-Daemon aufruft.
Rsync als Windows-Dienst mit Drittanbieter-Tools einrichten
Da Rsync nicht nativ als Windows-Dienst vorliegt, bieten sich zudem Windows-Tools wie nssm (Non-Sucking Service Manager) an, um beliebige Befehle oder Programme als Dienste zu konfigurieren. Mit nssm kann man den Rsync-Daemonbefehl als Dienst registrieren und starten.
Nach der Installation von nssm öffnet man eine administrative Eingabeaufforderung und gibt beispielsweise ein:
nssm install rsyncd
Im sich öffnenden Fenster gibt man den Pfad zu rsync.exe an (z. B. innerhalb der Cygwin-Installation) und fügt die notwendigen Argumente --daemon --config=pfad\zur\rsyncd.conf hinzu. Nach Bestätigung wird der Dienst installiert und kann mit net start rsyncd gestartet werden.
Fazit
Unter Windows lässt sich Rsync als Dienst oder Hintergrundprozess betreiben, wenn man das native Werkzeug um eine Laufzeitumgebung (wie Cygwin oder WSL) und entsprechende Dienst-Manager wie cygrunsrv oder nssm ergänzt. Wichtig ist eine korrekte Konfiguration der Rsync-Daemon-Einstellungen und die administrative Einrichtung des Dienstes. So läuft Rsync zuverlässig im Hintergrund und gewährleistet Datei-Synchronisationen ohne manuelles Starten im Terminal.
