rsync wird unter Linux-Systemen gerne zur Synchronisation oder zum Backup von Dateien verwendet. Hierbei besticht es durch einfache Verwendung und effiziente Nutzung der Bandbreite. Dank cygwin kann rsync auch unter Windows eingesetzt werden.
Linux-Werkzeuge unter Windows zu verwenden haben hierbei mehrere Vorteile gegenüber kommerziellen Synchronisations-Lösungen:
- Keinerlei Lizenzkosten
- Einsatz im heterogenen Netzwerk möglich
- Meist gute Dokumentation
- Oftmals existiert eine Vielzahl an Tools
Die Idee/Notwendigkeit rsync unter Windows zu verwenden entstand hierbei bei der Suche nach einer brauchbaren, aber kostengünstigen Lösung für eine Backupsystem für Windows.
Läuft rsync unter Windows kann somit ein Linux-Rechner als Backupsystem dienen. Die gespeicherten Daten könnten per Samba direkt wieder freigegeben werden, wodurch das Zurückspielen zur Kleinigkeit wird (vor allem im Vergleich zu Lösungen mit Bandlaufwerken).
Trotzdem soll der Artikel nicht primär beschreiben, wie rsnapshot unter Windows eingerichtet werden kann. Vielmehr soll eine allgemeine Anleitung zur Installation von rsync, geschützt durch einen OpenSSH-Server, entstehen. Am Ende des Artikels werden allerdings einige Besonderheiten gelistet, die in Kombination mit rsnapshot auftreten können.
cygwin installieren und konfigurieren
cygwin ist eine Nachbildung der Linux-API in einer DLL. Es bietet sich also an um beliebige Programme, die unter Linux funktionieren nach Windows zu portieren. Hierbei müssen Linux-Programme allerdings aus dem Quelltext neu übersetzt werden. cygwin bietet dementsprechend eine Sammlung aus fertigen Binärpaketen, die über einen Paketmanager installiert werden können. Auf der Homepage selbst gibt es den Paketmanager als setup.exe zum Download.
Pakete installieren
Paketauswahl: Führt man den Paketmanager aus startet ein grafisches Programm, welches durch die Installation führt. Soweit nicht augrund besonderer Inhernetkonfiguration o.ä. nötig können die Voreinstellungen problemlos übernommen werden. Bei der Auswahl des Mirrors (Choose Download Site) sollte ein Server in der Nähe gewählt werden, falls bekannt. Nachdem vom Mirror die Paketliste heruntergeladen wurde können gewünschte Programme gewählt werden.
In der Paketauswahl sind einige Basispakete vorausgewählt, weitere Pakete können beliebig hinzugefügt werden, Abhängigkeiten werden automatisch aufgelöst. Für den Einsatz von rsync hinter einem OpenSSH-Server sind genau diese beiden Pakete nötig. Beide können unter der Kategorie Net gefunden werden als openssh
und rsync
(bei openssh
wird auch das Paket openssl
mit ausgewählt). Für das Bearbeiten der Konfigurationsdateien kann zusätzlich ein Editor, zu finden unter Editors, installiert werden. Klickt man nun auf Weiter werden die gewählten Pakete, standardgemäß nach C:cygwin
, installiert. Abschließend fragt cygwin, ob es Verknüpfungen auf dem Desktop/im Startmenü erstellen soll. Um später eine Shell starten zu können sollte mindestens eine der beiden Auswahlmöglichkeiten aktiviert werden.
Benutzerkonten anlegen
Synchronisation der Benutzer/Gruppen: Um sich später per SSH auf dem Rechner einloggen zu können müssen die Benutzerkonten von Windows in der cygwin-Installation angelegt werden. Traditionell werden hierzu die dateien /etc/passwd
und – für Gruppen – /etc/group
verwendet. cygwin bietet zwei fertige Werkzeige um diese Dateien mit den unter Windows gespeicherten Daten abzugleichen.
Mit mkpasswd
kann /etc/passwd
erstellt werden, mkgroup
erstellt entsprechend /etc/group
. Um beide Dateien anzulegen muss die Shell gestartet werden. Dann kann mit mkpasswd -cl > /etc/passwd
bzw. mkgroup -cl > /etc/group
die Dateien erstellt werden.
Werden Änderungen an den Windows-Benutzern vorgenommen muss allerdings neu synchronisiert werden. Einzig das Passwort wird direkt aus WIndows verwendet.
Besonderheiten von cygwin
C: unter cygwin
Gerade im Bezug auf die Verzeichnisstruktur unterscheidet sich Windows stark von UNIX-Systemen. Werden unter UNIX alle Dateisysteme unter einer Wurzel / eingehängt benutzt Windows für jedes Laufwerk einen eigenen Buchstaben X:. Um die Laufwerksbuchstaben von Windows auf die UNIX-API abbilten zu können werden Laufwerke von Windows in /cygdrive
„“eingehängt““. C:
wird also zu /cygdrive/c
unter cygwin. Die Verzeichniswurzel ist in cygwin der Pfad in den cygwin installiert wurde, also normalerweise C:cygwin
.
Auch der Verzeichnistrenner (/ vs. ), die Dateirechte sowie die Möglichkeiten SetUID-Programme zu haben ist unterschiedlich, für den Einsatz von rsync im Ramen dieses Artikels aber nicht relevant.
OpenSSH einrichten
Um die Verbindung zum rsync-Server zu verschlüsseln und keine Klartextpasswörter zur Authentifizierung benutzen zu müssen soll OpenSSH verwendet werden. Gerade durch das Public-Key-Verfahren eignet es sich hervorragend um automatisierte rsync-Synchronisationen zu ermöglichen.
Grundkonfiguration
sshd_config im vim
Um OpenSSH verwenden zu müssen müssen Host-Schlüssel erstellt werden. Mit dem Befehl ssh-host-config
kann dieser erstellt werden. Gleichzeitig wird hierbei eine Grundkonfiguration geschrieben. Die Frage nach privilege separation kann im Normalfall mit no beantwortet werden.
Konfiguration anpassen
Um später OpenSSH möglichst sicher zu bekommen sollten bestimmte Konfigurationseinstellungen vorgenommen werden. Hierzu wird die Datei /etc/sshd_config
bzw. C:cygwinetcsshd_config
bearbeitet. Die folgenden Einstellungen sollten geändert/geprüft werden (Hinweis: es handelt sich hierbei um keine vollständige Konfigurationsdatei):
# Keine SSH Version 1 zulassen, da unsicher Protocol 2 # Login mit Passwort verbieten, Public-Key wird verwendet PasswordAuthentication no # Leere Passworte verbieten PermitEmptyPasswords no
Logins mit Public-Key-Authentifizierung
Um später beim Login auf dem OpenSSH kein Passwort zu benötigen, sich aber trotzdem authentifizieren zu müssen kommt einer Public-Key-Authentifizierung zum Einsatz. Statt einem Passwort wird hierbei der öffentliche Teil eines Schlüssels auf dem OpenSSH-Server hinterlegt. Mithilfe des privaten Teils kann sich später ein Benutzer authentifizieren.
Um einen Schlüssel zu generieren kommt ssh-keygen
zum Einsatz, der Aufruf von ssh-keygen -t dsa -b 1024
erzeugt einen 1024-Bit-DSA-Schlüssel (Bei der Frage nach einem Passwort einfach Enter drücken). Dieser wird, soweit nicht anders angegeben, unter ~/.ssh/id_dsa
gespeichert, der öffentliche Teil unter ~/.ssh/id_dsa.pub
. Um sich auf dem Windowsrechner später passwortlos einloggen zu können muss der öffentliche Teil des Schlüssels auf den Windowsrechner kopiert werden. Am einfachsten wird hierzu in der cygwin-Shell der Schlüssel mithilfe eines Editors in die Datei ~/.ssh/authorized_keys
geschrieben. Ist kein Editor installiert kann der Schlüssel unter C:cygwinhomeUSERNAME.sshauthorized_keys
gespeichert werden.
Nachdem der öffentliche Teil des Schlüssels kopiert wurde sollte ein passwortloser Login möglich sein. Davor muss der OpenSSH-Server unter Windows allerdings noch gestartet werden.
OpenSSH als Windows-Dienst einrichten
sshd als Windows-Dienst
Damit OpenSSH beim Starten von Windows geladen wird muss es als Windows-Dienst eingerichtet werden. cygwin bietet hierfür ein einfaches Werkzeug genannt cygrunsrc
. Hiermit lassen sich WIndows-Dienste hinzufügen und löschen, aber auch starten/stoppen. Um OpenSSH als Windows-Dienst hinzuzufügen wird der Befehl cygrunsrv -I sshd -p /usr/sbin/sshd -a "-D"
verwendet. In Zukunft wird nun OpenSSH beim Booten direkt mitgestartet. Hierbei wird /usr/sbin/sshd
mit dem Parameter -D gestartet, was zur Folge hat, dass sshd
nicht von selbst aus zum Daemon wird. Nur so kann der Dienst von Windows aus gestartet/-stoppt und der Status ermittelt werden. Mit cygrunsrv -R sshd
kann der Dienst wieder entfernt werden.
cygrunsrv
bietet grundsätzlich auch Optionen um den Dienst zu stoppen (cygrunsrv -E sshd
) und neu zu starten (cygrunsrv -S sshd
).
Ist OpenSSH nun gestartet, so kann man sich passwortlos mithilfe des Public-Key-Verfahrens einloggen. Ein einfaches ssh $servername
sollte nun zum Login genügen.
rsync auf localhost über OpenSSH
rsync benutzen
Läuft OpenSSH ist es ein einfaches rsync zu verwenden. Unterschiede gibt es nahezu keine, rsync kann also wie gewohnt benutzt werden. Einzig die ungewohnten Pfade und Benutzer/Rechte können für Verwirrung sorgen.
Ruft man nun also rsync -vr $servername:$pfadname .
auf wird rsync wie gewohnt die Dateien kopieren.
rsnapshot unter Windows
Unter Linux kann rsync mithilfe des Scripts rsnapshot dazu verwenden möglichst effektiv komfortable Backups zu erstellen. Läuft OpenSSH/rsync unter Windows ergeben sich nahezu keine Unterschiede.
Probleme bereitete im Test allerdings /cygdrive
. Da die Zugriffsrechte auf dieses Verzeichnis r-xr-xr-x
sind können Dateien im Verzeichnis nicht ohne Änderung der Rechte gelöscht werden. Läuft rsnapshot unter einem Benutzeraccount bricht das Script dementsprechend ab, wenn die ersten Backupstufen aus dem backup fallen sollen (ältestes Backup eines Intervalls wird gelöscht). Da die Windows Benutzerrechte in dem Fall meistens sowieso nciht gebraucht werden (und die Umsetzung in UNIX-Rechte außerst fraglich ist) kann man dieses Problem einfach umschiffen. Werden unter rsync_short_args
statt -a
die Optionen -rlt
angegeben werden keine Benutzer/Gruppen und Rechte mehr kopiert. Somit kann rsnapshot die Verzeichnisse wieder problemlos entfernen.
Abonniere das kostenlose KI-Update
Bleib auf dem Laufenden in Sachen Künstliche Intelligenz!
Melde Dich jetzt mit Deiner E-Mail-Adresse an und ich versorge Dich kostenlos mit News-Updates, Tools, Tipps und Empfehlungen aus den Bereichen Künstliche Intelligenz für dein Online Business, WordPress, SEO, Online-Marketing und vieles mehr.
Keine Sorge, ich mag Spam genauso wenig wie Du und gebe Deine Daten niemals weiter! Du bekommst höchstens einmal pro Woche eine E-Mail von mir. Versprochen.