Rsnapshot

Aus

Backups mit Rsnapshot erstellen

Backups sind eine sehr wichtige Sache. Leider hat man mit dem Standard-Backup (rsync) das Problem, dass keine Versionen erstellt werden: Wenn man eine Datei in der Quelle löscht und ein Backup macht, dann ist die Datei im aktuellen Backup weg und es kann später nicht mehr auf diese Datei zugeriffen werden. Um dieses Dilemma zu lösen bieten sich Snapshots (Momentaufnahmen) als Backup an. rsync alleine kann das leider nicht, aber via ipkg gibt es das Paket rsnapshot, welches im Zusammenspiel mit rsync diese Funktionaliät bietet

Voraussetzungen

  1. Zugriff auf die Konsole mittels telnet oder ssh
  2. Paketverwaltung ipkg installiert

Installation

Die Installation von rsnapshot ist auf der Konsole sehr schnell erledigt. Dazu einfach als Root mit Administatorpasswort auf der Konsole

ipkg update
ipkg install rsnapshot

eingeben und das Paket und alle Abhängigkeiten davon sollte installiert werden. Der erste Befehl dient dazu ipkg zu informieren, welche neuen Pakete vorhanden sind. Dieser Befehl sollte von Zeit zu Zeit immer wieder mal ausgeführt werden. Die eigentliche Installation wird mit dem zweiten Befehl eingeleitet.

Konfiguration

Unter /opt/etc/ sollte sich die Konfigurationsdatei rsnapshot.conf befinden. In dieser müssen noch einige Anpassungen gemacht werden. Die wichtigsten Anpassungen möchte ich kurz beschreiben:

  1. snapshot_root
    Hier wird der Pfad für die Backups angegeben. Dieser Parameter muss auf einen gültigen Pfad verweisen
  2. no_create_root
    Wenn dieser Parameter auf 1 resp auskommentiert ist, dann legt rsnapshot nicht automatisch das snapshot_root-Verzeichnis an. Das ist v.a. bei Backups auf externe Medien von Nutzen
  3. cmd_rsync
    Hier muss der gültige Pfad zur rsync-Installation angegeben werden
  4. cmd_ssh
    Hier sollte der gültige Pfad zu ssh angegeben werden
  5. interval
    Hier wird definiert in welchen Abständen die einzelnen Backups zu erfolgen haben. Hourly 6 heisst, dass täglich alle 4 Stunden (d.h. 6 mal pro Tag) ein Snapshot gemacht werden sollte. Daily 7 heisst jeden Tag der Woche.
  6. rsync_short_args
    Hier können die kurzen Parameter, welche an rsync übergeben werden definiert werden. Normalerweise macht es Sinn folgende zu übergeben: -avz
  7. backup
    Hier werden die verschiedenen zu backupenden Verzeichnisse und ihre Ziele angegeben. Dabei besteht eine Zeile immer aus der Einleitung backup gefolgt vom Source-Verzeichnis gefolgt vom Zielverzeichnis unterhalb von snapshot_root
    Es können also nur relative Ziele zu snapshot_root angegeben werden. Es bietet sich an pro Server ein Unterverzeichnis anzulegen. Nicht existierende Zielverzeichnisse werden dabei automatisch angelegt.
    Wichtig ist, dass alle Verzeichnisangaben beim Backup den abschliessenden Slash haben!!!

In der Config Datei darf es keine Leerzeichen geben. Sonst motzt rsnapshot. Alle Whitespaces sind TABS. Es darf sich kein einziges Leerzeichen darin befinden, sonst lässt sich rsnapshot nicht ausführen.

Ausführen

Zu Testen der Config kann man folgenden Befehl auf der Konsole absetzen

rsnapshot -t hourly

-t sorgt dafür, dass rsnapshot die Config einliest und auf der Konsole alles ausgibt was es tun würde. Es wird aber kein Backup gefahren.

Automatisieren mittels Cron

In der Datei crontab kann man dann die Jobs eintragen, damit diese zur richtigen Zeit automatisch ausgeführt werden. Das erste Backup sollte man aber noch manuell machen, da dieses je nach Datenmenge sehr lange dauern kann

/opt/bin/rsnapshot hourly

wirft das Backup an. Zum Automatisieren der Folgebackups bietet sich cron an:

0 */4 * * * root /opt/bin/rsnapshot hourly
30 23 * * * root /opt/bin/rsnapshot daily 
30 20 * * 5 root /opt/bin/rsnapshot weekly
30 22 1 * * root /opt/bin/rsnapshot monthly

Wenn ihr den Default Cron verwendet, dann achtet darauf, dass ihr keine Leerzeichen sondern Tabulatoren zum Trennen der einzelnen Werte verwendet. Sonst fliegt cron auf die Schnauze!!!
Nach einigen Tagen sollte dann das Backupverzeichnis irgendwie so ausschauen

drwxr-xr-x   15 root     root         4096 Jan  5 08:00 .
drwxr-xr-x    3 root     root         4096 Dec 26 17:02 ..
drwxr-xr-x    3 root     root         4096 Jan  4 00:00 daily.0
drwxr-xr-x    3 root     root         4096 Jan  3 00:00 daily.1
drwxr-xr-x    3 root     root         4096 Jan  2 00:00 daily.2
drwxr-xr-x    3 root     root         4096 Jan  1 00:00 daily.3
drwxr-xr-x    3 root     root         4096 Dec 31 00:00 daily.4
drwxr-xr-x    3 root     root         4096 Dec 30 00:00 daily.5
drwxr-xr-x    3 root     root         4096 Jan  5 08:01 hourly.0
drwxr-xr-x    3 root     root         4096 Jan  5 04:01 hourly.1
drwxr-xr-x    3 root     root         4096 Jan  5 00:00 hourly.2
drwxr-xr-x    3 root     root         4096 Jan  4 20:01 hourly.3
drwxr-xr-x    3 root     root         4096 Jan  4 16:01 hourly.4
drwxr-xr-x    3 root     root         4096 Jan  4 12:01 hourly.5
drwxr-xr-x    3 root     root         4096 Dec 26 19:50 weekly.0

Dabei ist .0 immer die aktuellste Version. Höhere Nummern sind also älter.

Links

rsync rsnapshot