Einfache Backup-Lösung unter Linux mit rsync, SSH und cron realisieren

Große Unternehmen haben eine gute Strategie für Backups unter Linux. Doch bei kleineren Unternehmen sieht es bei den Backups nicht so gut aus.

Große Unternehmen verfügen normalerweise über eine gut organisierte Backup-Strategie. In mittleren bis kleinen Unternehmen aber kann es vorkommen, dass – just in dem Moment, wo das Backup-Band gebraucht würde – leider nichts darauf zu finden ist. Dieser Artikel unterstützt Sie dabei, solche Fälle zu vermeiden, indem Sie eine einfache Backup-Lösung unter Linux erstellen.

Die beschriebene Lösung kann auf zweierlei Arten verwendet werden: Zum Schreiben von Backup-Daten von einer Workstation auf einen zentralen Linux-Server oder zum Schreiben von Backups von einem Server auf einem anderen. Wenn dies auf alle Ihre Server in Ihrem Netzwerk angewendet wird, dann entsteht auf diesem Wege eine kostengünstige und effiziente Backup-Strategie, die für kleine bis mittlere Unternehmen ausreichend sein dürfte.

Systemanforderungen unter Linux


Zum Einrichten dieses Backup-Verfahrens benötigen Sie ein externes Laufwerk. Sie könnten auch auf ein externes USB-Laufwerk schreiben, was allerdings nicht sonderlich effizient ist. Deshalb gehe ich an dieser Stelle davon aus, dass Sie Ihr Backup auf einen Server innerhalb des Netzwerks schreiben. Bei diesem muss es sich um einen Linux-Server (jede Linux-Distribution ist geeignet) mit SSH und rsync handeln.

Zusätzlich zum Backup-Medium benötigen Sie noch rsync. Dieses vielseitige Synchronisierungs-Tool zählt in allen Linux-Distributionen zu den Standardkomponenten. Wie schon der Name vermuten lässt, unterstützt es bei der Remote-Synchronisierung von Dateien. Es kann keine inkrementellen oder differenziellen Backups ausführen, lässt sich aber nutzen, wenn Sie Ihre Daten für den Fall eines Crashs Ihrer lokalen Festplatte andernorts sichern wollen. Sie können das Verfahren noch optimieren, indem Sie zusätzlich differenzielle und inkrementelle Backups anfertigen. Dies soll aber nicht Gegenstand dieses Artikels sein.

Die Grundlagen unserer Backup-Lösung sind recht leicht zu verstehen. Rsync muss eine Verbindung zum Remote-Server herstellen und Daten auf diesen Server schreiben. Der Standard-Mechanismus, den rsync hierfür nutzt, ist SSH. Das können Sie verändern, aber SSH ist auf nahezu allen Linux-Maschinen verfügbar, weshalb sich seine Nutzung anbietet. Die folgende Anweisung zeigt ein Beispiel dafür:

rsync -rau --progress /data 192.168.1.98:/data

Nach dieser Anweisung beginnt rsync damit, den Inhalt des lokalen Verzeichnisses /data mit dem Verzeichnis /data auf dem Server 192.168.1.98 zu synchronisieren. Die Server-Verbindung wird über das aktuelle Benutzerkonto hergestellt – wenn Sie also als Linda auf der lokalen Workstation angemeldet sind, dann verbinden Sie sich als Linda mit dem Remote-Rechner, und falls Sie Root sind, verbinden Sie sich als Root. Stellen Sie sicher, dass Sie über ausreichende Berechtigungen verfügen, damit Sie aus dem Quellverzeichnis lesen und in das Zielverzeichnis auf dem Server schreiben dürfen. Als Nächstes werden hier einige Optionen für den rsync-Befehl verwendet. Die Option --progress führt zur Anzeige des Fortschritt bei der rsync-Anweisung, die Option -rau stellt sicher, dass alles inklusive der Metadaten der Dateien synchronisiert wird.

Wenn Sie diese Anweisung eingegeben haben, wird der Inhalt Ihres lokalen Verzeichnisses /data mit dem Verzeichnis /data auf Ihrem Server synchronisiert. Aber: Das Problem mit dieser Anweisung besteht darin, dass Sie diese händisch eingeben müssen. Das wiederum kann dazu führen, dass Sie dies unter Umständen vergessen. Daher sollten wir diesen Teil automatisieren, indem wir einen cron-Job erstellen. Das Problem mit cron wiederum besteht darin, dass zum Herstellen der Server-Verbindung der SSH-Dämon auf dem Server kontaktiert wird, der dann ein Passwort fordert. Eine mögliche Alternative ist, SSH mit öffentlichen/privaten Schlüsseln zu konfigurieren, damit dieser Prozess automatisch abgewickelt wird.

Konfiguration der automatischen SSH-Anmeldung


Die Grundidee der Verwendung von öffentlichen/privaten Schlüsseln ist, dass Sie auf Ihrer Workstation ein Schlüsselpaar aus einem öffentlichen und einem privaten Schlüssel erstellen. Sie kopieren zuerst den öffentlichen Schlüssel in die Datei ~/.ssh/authorized_keys auf Ihrem Server (~ bezieht sich auf das Basisverzeichnis des aktuellen Benutzers). Wenn Sie das nächste Mal eine SSH-Anweisung auf Ihrer Workstation starten, dann verbindet diese sich automatisch zuerst mit Ihrem öffentlichen/privaten Schlüsselpaar. Die Workstation generiert ein verschlüsseltes Paket mithilfe des privaten Schlüssels. Wenn der Server dieses entschlüsseln kann, dann ist darüber sichergestellt, dass wirklich Sie es sind, der sich anmeldet und Sie werden ohne Kennwort-Eingabe authentifiziert. Zum Erstellen dieser Konfiguration können Sie die folgende Prozedur ausführen:

  1. Verwenden Sie auf der Workstation ssh-keygen -t dsa und quittieren Sie die angebotenen Standardwerte einfach mit Enter. Als Ergebnis erhalten Sie eine Datei mit dem Namen ~/.ssh/id_dsa – dies ist Ihr privater Schlüssel – und eine namens ~/.ssh/id_dsa.pub als Ihren öffentlichen Schlüssel.
  2. Verwenden Sie nun ssh-copy-id, um den öffentlichen Schlüssel in das Basisverzeichnis Ihres Servers zu kopieren. Nutzen Sie dazu die Anweisung

ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.1.98

Dadurch wird die Datei .ssh/authorized_keys auf dem Server angelegt. Dies ermöglicht Ihnen die Anmeldung mit Ihrem öffentlichen/privaten Schlüsselpaar.

Nach Ausführung dieser Schritte können Sie sich nun auf dem Remote-Server einloggen, indem Sie die folgende Anweisung verwenden:

ssh 192.168.1.98

Sie werden feststellen, dass Sie an dieser Stelle kein Kennwort mehr für die Anmeldung eingeben müssen.

Einplanen des Backup-Jobs mithilfe von cron


Nachdem Sie nun wissen, welche Anweisung Sie verwenden müssen, und SSH für die automatische Anmeldung konfiguriert wurde, können Sie nun Ihrem Rechner mitteilen, dass dieser die Daten täglich automatisch synchronisieren soll. Dazu können Sie auf Ihrer Workstation cron verwenden, eine weitere Standard-Komponente von fast allen Linux-Distributionen. Zum Erstellen eines cron-Jobs unter Ihrem aktuellen Benutzer verwenden Sie crontab –e. Dies öffnet den Crontab-Editor, bei dem es sich entweder um vi oder joe handelt. Geben Sie im Editor die folgende Anweisung ein:

0 10 * * * rsync -rau /data 192.168.1.98:/data

Wie Sie sehen, wird in der crontab-Datei dieselbe rsync-Anweisung verwendet wie ansonsten manuell – mit einer Ausnahme: Die Option --progress entfällt. Der Grund hierfür ist, dass cron als Hintergrund-Job – unabhängig von irgendeinem Terminal auf Ihrem Computer – läuft. Deshalb ist eine Fortschrittsanzeige nicht möglich.

Vor der eigentlichen Anweisung müssen Sie cron mitteilen, wann sie ausgeführt werden soll. Im Beispiel habe ich zu diesem Zweck 0 10 * * * eingegeben. In cron werden fünf Stellen verwendet, um das Datum und die Uhrzeit für die Job-Ausführung festzulegen. Wenn Sie die Anweisung eingeben wie oben, dann wird der Job täglich um 10.00 Uhr ausgeführt. Vergessen Sie dabei nicht die erste 0: Die gibt die genaue Minute an, zu der dieser Job ausgeführt werden soll; ohne sie läuft der Job zwischen 10.00 und 10.59 Uhr jede Minute!

Damit haben wir in einem einfachen Durchlauf ein schlichtes, aber wirkungsvolles Backup-Verfahren erstellt. Obwohl es sicherlich noch andere Möglichkeiten gibt, werden Sie kaum eine finden, die genauso einfach und effizient ist wie diese. Und sie ist mit Sicherheit wirkungsvoller als die Lösung, die ansonsten in den meisten Ein-Mann-Unternehmen und von Privatnutzern angewendet wird: gar keine.

ÜBER DEN AUTOR: Sander van Vugt arbeitet als Autor und freier Technik-Dozent mit Spezialisierung auf Linux seit 1994. Er ist außerdem technischer Berater für Hochverfügbarkeits (HA)-Cluster und Performance-Optimierung sowie Experte für SLED-10-Administration.

Erfahren Sie mehr über Backup-Lösungen und Tools

ComputerWeekly.de
Close