Jürgen Fälchle - stock.adobe.c
So optimieren Sie zentrale Backups mit rsync
Das Linux-Dienstprogramm rsync ist ein leistungsstarkes Tool für erfahrenen Admins. In diesem Schritt-für-Schritt-Tutorial erfahren Sie, wie sich rsync für Backups einsetzen lässt.
Die heutige, dezentrale IT-Infrastruktur bringt Daten näher an die Benutzer, die sie benötigen, kann aber grundlegende Aufgaben wie Backups erschweren. Hier kann das Synchronisations-Tool rsync Administratoren dabei helfen, komplexe Sicherungsprozesse zu vereinfachen.
Das Linux-Dienstprogramm rsync kopiert und synchronisiert Daten zwischen Dateiservern. Es tut dies, indem es die Dateien an der Quelle vergleicht und Unterschiede zwischen ihnen identifiziert. Anschließend überträgt das Programm nur die geänderten Teile der Datei, um beide Kopien abzugleichen. Diese Teilübertragung basiert auf dem sogenannten Delta-Transfer-Algorithmus, der besonders effizient ist, wenn nur kleine Änderungen vorliegen.
Obwohl rsync schon sehr lange existiert, bleibt es ein unverzichtbares Werkzeug für Systemadministratoren. Zur Demonstration stellt dieser Artikel ein konkretes Szenario vor, in dem eine Organisation rsync für Backups einsetzen könnte.
Das Unternehmen, das hier als Beispiel dient, verfügt über mehrere Zweigstellen, von denen jede ihren eigenen Dateiserver für lokale Mitarbeiter hat. Die Administratoren in der Hauptzentrale möchten den Sicherungsprozess vereinfachen, indem sie bestimmte Daten dieser Zweigstellenserver zentral auf einem leistungsstarken zentralen Dateiserver zusammenführen. Von dort aus setzen die Administratoren Enterprise-Backup-Software ein.
Dieses Szenario zeigt die verschiedenen Einsatzmöglichkeiten und Befehle, die für die Synchronisierung von Dateien für zentrale Backups mit rsync erforderlich sind. Wenn Ihre Organisation Schwierigkeiten hat, Dateien für Sicherungen zu synchronisieren, kann dieses Szenario Sie durch die notwendigen Schritte führen.
Warum lohnt sich der Einsatz von rsync?
Mehrere Funktionen und Fähigkeiten von rsync machen es für diesen Datensynchronisationsprozess geeignet, darunter:
- Einfache Konfiguration und Automatisierung durch Skripte.
- Geschwindigkeit und Optimierung, da nur Änderungen synchronisiert werden.
- Rekursive Navigation durch Dateistrukturen, um geänderte Dateien zu erkennen.
- Die Möglichkeit, unterbrochene Übertragungen fortzusetzen.
- Starke plattformübergreifende Kompatibilität für viele Anwendungsfälle.
Diese Eigenschaften machen rsync besonders attraktiv für Umgebungen mit begrenzter Bandbreite oder großen Datenmengen. Es überträgt nicht zwangsläufig jedes Mal komplette Dateien, sondern nur geänderte Blöcke, was Zeit und Netzwerkressourcen spart.
Das Szenario der Beispielumgebung
Die technischen Aspekte dieses Beispielszenarios sind wie folgt. Sie können für Ihre eigene Umgebung die Standorte, Hostnamen und IP-Adressen entsprechend anpassen.
Hauptzentrale:
- Zentraler Linux-Dateiserver namens file-server01 mit der IP-Adresse 192.168.1.10/24
- Ausreichende Speicherkapazität und Leistung, um die erwarteten Daten zu unterstützen.
- rsync ist installiert.
- Zielverzeichnis für eingehende Daten, zum Beispiel /data/branches sind angelegt. Fügen Sie Unterverzeichnisse für jeden Zweigstellenserver hinzu.
Zweigstellen:
- Zweigstelle 2: Lokaler Linux-Dateiserver file-server02 mit IP-Adresse 192.168.2.30/24
- Zweigstelle 3: Lokaler Linux-Dateiserver file-server03 mit IP-Adresse 192.168.3.22/24
- Zweigstelle 4: Lokaler Linux-Dateiserver file-server04 mit IP-Adresse 192.168.4.27/24
- Jeder Server hat konsistente Datenverzeichnisse, beispielsweise /srv/data.
- Eine zuverlässige Internet- oder VPN-Verbindung ist eingerichtet, idealerweise verschlüsselt.
Es wird empfohlen, alle beteiligten Linux-Dateiserver auf dieselben Versionen derselben Distribution zu aktualisieren. Aktualisieren Sie alle beteiligten Anwendungen, insbesondere rsync selbst, auf die gleiche Version. Diese Schritte sind zwar nicht zwingend erforderlich, helfen jedoch, kleinere Unterschiede zwischen Softwareversionen zu vermeiden.
Beachten Sie, dass macOS rsync standardmäßig enthält. Unter Windows kann rsync mithilfe des Windows Subsystem for Linux (WSL) oder Cygwin hinzugefügt werden.
Einheitliche Softwarestände vereinfachen nicht nur die Kompatibilität, sondern auch die Fehlersuche. Außerdem sollte der Admin sicherstellen, dass Zeit und Zeitzonen auf allen Systemen synchronisiert sind, beispielsweise über NTP.
Die Konnektivität konfigurieren
Konfigurieren Sie die DNS-Namensauflösung, um die Verwaltung zu vereinfachen, sodass Sie in Ihren Befehlen Server-Host-Namen anstelle von IP-Adressen verwenden können.
Tunneln Sie diese Verbindungen über SSH, um eine zuverlässige Verschlüsselung sicherzustellen. Danach konfigurieren Sie eine SSH-Schlüssel-basierte Authentifizierung für eine passwortlose Option.
Allgemeines Vorgehen
1. Erstellen Sie ein dediziertes Konto, zum Beispiel backupadmin, für den rsync-Prozess auf jedem Zweigstellenserver und dem zentralen Server in der Hauptzentrale.
2. Generieren Sie auf dem zentralen Server SSH-Schlüssel für das Konto backupadmin mit dem Befehl ssh-keygen
3. Verteilen Sie den öffentlichen Schlüssel an jede Zweigstelle mit ssh-copy-id backupadmin@file-server02
4. Passen Sie den Befehl für die anderen Dateiserver an.
5. Testen Sie die Konfiguration, um sicherzustellen, dass SSH für das Konto backupadmin kein Passwort abfragt.
Für zusätzliche Sicherheit können Sie das SSH-Konto mit eingeschränkten Berechtigungen ausstatten oder es so konfigurieren, dass es ausschließlich rsync-Kommandos ausführen darf.
Push oder Pull – das ist hier die Frage
Bei der Gestaltung einer rsync-Konfigurationen gibt es zwei Strategien: Push oder Pull.
- Push-Methode: Die Dateiserver in den Zweigstellen initiieren eine Verbindung zum zentralen Server und pushen (schieben) die geänderten Dateien.
- Pull-Methode: Der zentrale Dateiserver initiiert die Verbindung zu den Zweigstellenservern und zieht (pull) die geänderten Dateien von diesen.
Unser Beispielszenario verwendet die Pull-Methode, um die rsync-Konfiguration in den Händen des zentralen IT-Personals in der Zentrale zu behalten. Sie vereinfacht zudem das Konten- und SSH-Schlüssel-Management.
rsync-Befehle ausführen
Das Tool rsync verwendet eine standardisierte Linux-Syntax: Der Befehl wird von Optionen (options) gefolgt, dann von der Quelle (source) und dem Ziel (target).
rsync [options] source destination
Wenn Sie ein entferntes System als Quelle verwenden, geben Sie ein Konto mit den erforderlichen Rechten an, um auf die benötigten Daten zuzugreifen. Das Ziel ist ein lokaler Dateipfad:
rsync [options] account@remotesystem:/path /local/path
Um die Dateien unter /srv/data auf dem entfernten System file-server02 als Benutzer backupadmin mit dem lokalen Verzeichnis /data/branches/file-server02 zu synchronisieren, geben Sie Folgendes ein:
rsync [options] backupadmin@file-server02:/srv/data /data/branches/file-server02
Es gibt viele Optionen, um das Verhalten von rsync zu ändern. Hier sind einige häufig verwendete:
- -a: Archivmodus, um Berechtigungen, Zeitstempel (timestamps) und symlinks zu erhalten.
- -v: Ausführlicher Modus zur Verbesserung der Log-Einträge.
- -z: Komprimiert Dateien für effizientere Übertragungen. Bei sehr schnellen Netzwerken kann dies aufgrund des CPU-Overheads auch leicht kontraproduktiv sein.
- --delete: Entfernt Dateien, die an den Zweigstellen gelöscht wurden, auch im zentralen Speicher.
Verwenden Sie den Befehl man cron, um die cron man page zu öffnen, falls Sie Hilfe bei den Optionen benötigen.
Ihr grundlegender Befehl sieht folgendermaßen aus:
rsync -avz --delete backupadmin@file-server02:/srv/data /data/branches/file-server02
Wiederholen Sie den Befehl und passen Sie ihn entsprechend für file-server03 und file-server04 an.
Eine Option bei der Konfiguration von rsync ist die integrierte dry run-Funktion. Durch Hinzufügen der Option -n können Sie den Befehl prüfen, ohne tatsächlich Daten zu übertragen. Diese Funktion ist besonders nützlich zum Testen.
So konfigurieren Sie das rsync-Logging
Mit rsync lassen sich Log-Dateien anlegen. Fügen Sie einfach die Option --log-file={path} zum Standardbefehl hinzu.
Hier sehen Sie ein Beispiel, um eine Log-Datei für die Ressource file-server02 zu erzeugen:
rsync -avz --delete --log-file=/var/log/backups/file-server02.log backupadmin@file-server02:/srv/data /data/branches/file-server02
Sie können die Log-Einträge dann unter /var/log/backups/file-server02.log einsehen.
Das Implementieren von rsync
Nachdem die oben genannten Schritte umgesetzt wurden, kann der Plan zur Datenzentralisierung umgesetzt werden. Dafür stehen mehrere Konfigurationsmöglichkeiten zur Verfügung.
So planen Sie rsync (Scheduling)
Eine der einfachsten Möglichkeiten besteht darin, die obigen rsync-Befehle in der Datei /etc/crontab Ihres Linux-Systems einzutragen. Diese Datei bietet umfangreiche Zeitsteuerungsoptionen, wann das System rsync ausführt.
Beispiel: Um rsync jede Nacht um 23 Uhr mit dem Dateiserver der Zweigstelle 2 zu verbinden, geben Sie Folgendes ein:
0 23 * * * rsync -avz --delete --log-file=/var/log/backups/file-server02.log backupadmin@file-server02:/srv/data /data/branches/file-server02
Diese Konfiguration führt den Befehl zeitgenau jede 23. Stunde des Tages, jeden Tag und jeden Monat aus. Das bietet einen effektiven inkrementellen Backup-Ansatz.
Wiederholen Sie den Vorgang für die verbleibenden Zweigstellenserver. Erwägen Sie, jede Synchronisierungsaufgabe zu unterschiedlichen Zeiten zu planen, um Überlastung der zentralen Speicher- und Netzwerksysteme zu vermeiden.
Moderne Distributionen unterstützen alternativ auch systemd timer, die cron in vielen Fällen ersetzen oder ergänzen können.
Ein Skript erstellen
Statt eine Zeitplanung zu verwenden, könnten Sie ein etwas komplexeres Bash-Skript in Betracht ziehen, das zusätzliche Flexibilität bietet, wie das Einrichten mehrerer Kopierziele.
So könnten Sie beispielsweise einrichten, dass Ihr rsync-Job sowohl die Inhalte von /srv/data als auch Log-Dateien aus /var/log synchronisiert. Oder Sie konfigurieren, dass derselbe Prozess Benutzer-Home-Verzeichnisse mit einbezieht.
Skripte ermöglichen es außerdem, Kommentare und Erklärungen für andere Administratoren bereitzustellen.
Sobald Sie mit Ihrem Skript zufrieden sind, planen Sie es mit cron, ähnlich wie oben beschrieben.
Nachbereitung
Sobald Sie Ihren Plan zur Datenzentralisierung gestartet haben, sollten Sie Richtlinien zur Datenaufbewahrung festlegen, um Speicherverbrauch und gesetzliche Anforderungen zu verwalten. Achten Sie zudem auf Datenhoheitsanforderungen, falls Daten verschiedener Länder betroffen sind.
Beachten Sie, dass rsync keine Versionierung oder Snapshots bietet. Es ist daher ideal, rsync als Transport- und Synchronisationswerkzeug einzusetzen, während die zentrale Instanz von einer umfassenden Backup-Software mit Versionsverwaltung gesichert wird.