Unterabschnitte

rsnapshot – Backups lokaler und entfernter Dateisysteme

Einleitung

rsnapshot ist ein Werkzeug um Backups von lokalen oder entfernten Dateisystemen anzulegen. Es arbeitet auf der Basis von rsync und SSH und benutzt Hardlinks im Dateisystem selbst um Platz zu sparen.

Es werden sogenannte snapshots angelegt, die den Dateisysteminhalt der zu sichernden Ordner zum jeweiligen Zeitpunkt wiederspiegeln. Dabei handelt es sich um simple Kopien der zu sichernden Ordner. Um Platz zu sparen, wird die Fähigkeit von rsync verwendet, sogenannte Hardlinks für Dateien anzulegen, die sich seit dem letzten Backup nicht geändert haben. Dadurch werden identische Dateien nicht doppelt kopiert und Platz gespart.


Backup-Intervalle und Rotation

rsnapshot ist an sich sehr flexibel in der Festlegung von Backup-Intervallen. Für dieses eisfair-Paket wurde eine als sinnvoll angenommene Organisation der möglichen Intervalle und Intervallebenen ausgewählt, um dem Nutzer die manuelle Abstimmung von Intervallen und Ausführungszeiten der entsprechenden Cronjobs abzunehmen. Die Zeitebenen entsprechen vertrauten Intervallen mit abnehmender Granularität. Im Einzelnen existieren folgende Ebenen: hourly, daily, weekly, monthly.

Der Backup-Prozess läuft so ab, dass auf der untersten Ebene 'hourly' tatsächlich die zu sichernden Dateien kopiert werden. Dabei wird nicht strikt stündlich gesichert, sondern nach Wahl des Nutzers alle zwei bis zwölf Stunden. Dies wird über die Anzahl täglich anzulegender Snapshots in der Variablen RSNAPSHOT_BACKUPS_PER_DAY konfiguriert. Der jeweils aktuellste Snapshot liegt im Ordner hourly.0, mit jedem weiteren Lauf werden die Snapshots rotiert. Der älteste Snapshot der jeweiligen Ebene trägt die höchste Nummer.

Die Cronjobs der nächsthöheren Ebene 'daily' werden nur einmal täglich ausgeführt. Hier wird stets der älteste Ordner der tieferen Ebene 'hourly' zum aktuellen Ordner daily.0. Lässt man beispielsweise sechs Backups pro Tag anlegen, wird am Ende des Tages der Ordner hourly.5 zum neuen Ordner daily.0. Die Ordner der Ebene 'daily' werden ebenso rotiert. In dieser Ebene gibt es die feste Anzahl von sieben Ordnern. Der älteste wird an einem vom Nutzer festgelegten Wochentag zum Ordner weekly.0. Dieses Prinzip der Rotation und Verschiebung zur nächsthöheren Ebene setzt sich weiter fort bis monthly. Das Rotationsprinzip ist unabhängig davon ob lokale oder entfernte Ordner gesichert werden sollen.

Konfiguration

START_RSNAPSHOT

Zur Aktivierung des Pakets 'rsnapshot' muss diese Variable auf den Wert 'yes' gesetzt werden, der Wert 'no' deaktiviert das Paket. Der Inhalt dieser Variable bestimmt ebenfalls, ob die Cronjobs für 'rsnapshot' aktiviert werden oder nicht.

Gültige Werte: yes, no

RSNAPSHOT_BACKUP_TO_DIR

Über diesen Parameter wird das Verzeichnis festgelegt, wo alle Snapshots abgelegt werden, egal ob diese vom lokalen oder von entfernten Servern stammen. Es wird empfohlen die Rechte dieses Verzeichnisses auf 0700 zu setzen. Eine ausführliche Erläuterung dazu im Abschnitt 'sec:rsnapshot-readonlyforusers'.

Gültige Werte: vollständige Pfade

RSNAPSHOT_BACKUPS_PER_DAY

Dieser Parameter legt fest wie oft täglich rsnapshot gestartet wird. Die möglichen Werte liegen zwischen 2 und 12 und sind alle ganzzahlige Teiler von 24. Der Cronjob für diese Läufe von rsnapshot kann so derart eingerichtet werden, dass rsnapshot zu vollen Stunden läuft. Dies entspricht den im Abschnitt 'sec:rsnapshot-backupintervalle' erwähnten Jobs vom Typ 'hourly'. Wegen der direkten Abhängigkeit der Cronjobs von der Anzahl der Snapshots auf dieser Ebene, können die Zeiten nicht über das Setup-Menü eingestellt werden, sondern werden automatisch festgelegt.

Auf dem Level 'hourly' erfolgen die eigentlichen Backups durch Kopieren der Daten. Bei höheren Ebenen werden nur bereits erzeugte Snapshots tieferer Ebenen umbenannt bzw. verschoben. Das heißt die Jobs der Ebene 'hourly' benötigen die meiste Zeit. Abhängig von der Größe der zu sichernden Daten, sollte der Parameter daher nicht zu hoch eingestellt werden.

Gültige Werte: 2, 3, 4, 6, 8, 12

Standardwert: 6

RSNAPSHOT_WEEKLY_BACKUP_DAY

Mit dieser Variable wird festgelegt wann die Rotation der wöchentlichen Backups erfolgt. Zum aktuellen Snapshot der Ebene 'weekly' (weekly.0) wird stets der älteste Snapshot der Ebene 'daily', d.h. konkret daily.7. Die möglichen Werte sind jeweils die ersten drei Buchstaben der englischen Wochentagsbezeichnungen in Kleinbuchstaben.

Gültige Werte: mon, tue, wed, thu, fri, sat, sun

Standardwert: sat

RSNAPSHOT_MONTHLY_BACKUPS_TO_KEEP

Dieser Parameter legt fest, wieviel monatliche Backups aufgehoben werden sollen.

Gültige Werte: numerisch

Standardwert: 3

RSNAPSHOT_BACKUP_LOCAL_N

Über diesen Parameter wird die Anzahl der zu sichernden lokalen Ordner festgelegt.

Gültige Werte: numerisch

RSNAPSHOT_BACKUP_LOCAL_x_ACTIVE

Wird dieser Parameter auf 'yes' gesetzt, wird der zugehörige Ordner gesichert. Der Wert 'no' entfernt den Ordner aus dem Backup.

Gültige Werte: yes, no

RSNAPSHOT_BACKUP_LOCAL_x_DIR

Mit diesem Parameter wird ein lokaler Ordner festgelegt, von dem Snapshots angelegt werden sollen. Der Nutzer ist selbst verantwortlich diese Ordner sinnvoll auszuwählen. Voreingestellt sind die Ordner /etc/config.d, der die eisfair-spezifischen Konfigurationsdateien der installierten Pakete enthält sowie /home, der Ordner mit den Home-Verzeichnissen der Nutzer.

Gültige Werte: vollständige Pfade

Dateien wiederherstellen

Eine automatische Wiederherstellung der Daten ist nicht vorgesehen. Da die Dateien direkt im Dateisystem liegen, können und sollen sie einfach mit den bekannten Bordmitteln kopiert werden.


Read-Only-Zugriff für normale User

Es ist sehr zu empfehlen, normalen Nutzern keine Leserechte auf den Backup-Ordner selbst zu geben. Alle Dateien dort haben die Rechte, die sie auch im Quelldateisystem haben. Nutzer könnten hier Dateien ändern oder löschen und so die Konsistenz des Backups zerstören. Daher warnt das Paket beim Speichern der Config, wenn der in RSNAPSHOT_BACKUP_TO_DIR angegebene Ordner nicht root gehört und nicht die Rechte 0700 besitzt. Um den Nutzern dennoch Nur-Lese-Zugriff auf die Snapshots zu gewähren, bietet sich folgende Vorgehensweise an. To be continued ...