Regelmäßiges Backup einer Festplatte mit rsync

Wie schon in meinem vorherigen Blogpost geschrieben befindet sich in meinem Server zwei 160 GB Festplatten. Hier liegt die Idee nahe eine Festplatte als Sicherungsmedium zu verwenden, dass regelmäßig die andere Festplatte spiegelt.

Leider besitzt mein Mainboard keinen RAID-Controller, so dass ich auf rsync ausweichen muss. rsync kann eine Quelle und ein Ziel synchron halten, allerdings nur in eine Richtung. Wird im Ziel etwas geändert, gelöscht oder angelegt kann dies nicht auf die Quelle zurückgeführt werden. Dies ist in diesem Falle auch nicht wichtig, da an dem Backup eh keine Änderungen vorgenommen werden. Die Backups werden mittels cron automatisiert, so das man sich darum keine Gedanken mehr machen muss und es nicht vergessen kann.

Lassen Sie sich nicht von der länge dieses Artikels abschrecken. Ich habe Ihn nur sehr ausführlich geschrieben damit man die Schritte klar nachvollziehen kann.

Schritt 1: Festplatte vorbereiten

Da wir wie schon erwähnt die zweite Festplatte komplett für die Datensicherung nutzen werden, müssen wir sie dementsprechend einrichten. Dazu habe ich sie mit einem ext4 Dateisystem formatiert und standardmäßig in /backup eingehangen. Dies können Sie ganz einfach mit YaST erledigen. In /backup wird das System später gespiegelt.

Schritt 2: rsync Befehl bauen

Damit rsync später weiß, was es kopieren soll braucht es eine etwas längeren Befehlssatz:

rsync -auv --log-file=/var/log/rsync_backup --delete --exclude=/sys --exclude=/tmp --exclude=/proc --exclude=/mnt --exclude=/dev --exclude=/backup / /backup

Diesen werden wir nun auseinander nehmen, damit sie wissen was genau passiert.

  • rsync der Befehl an sich
  • -auv Hier muss man noch einmal etwas tiefer gehen. Das -a steht eigentlich für mehrere Optionen die in einem zusammengefasst sind. -a umfasst die Optionen r, l, p, t, g und D. Dass heißt, dass rsync alle Unterverzeichnisse mit verabreitet (r), symbolische Links mitkopiert (l), die Rechte der Dateien und Order beibehält (p), die Zeitstempel beibehält (t), die Gruppenrechte beibehält (g) und die Gerätedateien (D). Das –u steht für Update und sorgt dafür das nur neuere Dateien kopiert werden. Das -v steht für verbose und gibt Details auf der Konsole aus was gerade passiert.
  • –log-file=/var/log/rsync_backup Da wir ja einen Server betreiben und das Backup automatisch abläuft können wir leider nicht sehen ob es erfolgreich ist oder ob es Fehlermeldungen gab. Deswegen weisen wir rsync mit diesem Befehl an, einen Log in die Datei /var/log/rsync_backup zu schreiben. Der Pfad und der Name ist frei wählbar. Ist die Datei noch nicht vorhanden wird Sie automatisch angelegt.
  • –delete sorgt dafür das Dateien die auf der Quelle gelöscht wurden auch auf dem Ziel gelöscht werden. Ansonsten würde das Backup mit der Zeit immer voller werden, da Dateien in der Quelle wieder gelöscht werden aber auf dem Ziel verbleiben würden.
  • –exclude=/backup etc. Die exclude Optionen sagen rsync welche Ordner ausgelassen werden sollen. Das der Ordner /backup ausgelassen werden muss ist logisch, das rsync ansonsten nur im Kreis laufen würde. Die Ordner /tmp,  /sys , /proc und /dev sind für ein Update ohne Bedeutung, da diese Dateien vom Betriebssystem dynamisch bei jedem Start von selbst erstellt werden, bzw. bei /tmp es sich um temporäre Dateien handelt. Der Ordner  /mnt muss ausbleiben weil darin externe Medien wie DVDs etc. eingebunden werden die rsync dann auch kopieren würde. Beim nächsten Durchlauf würde diese Dateien wegen der –delete Option zwar wieder gelöscht werden, allerdings ist es ein Zeitaufwand der nicht sein muss.
  • / Das Quellverzeichnis
  • /backup Das Zielverzeichnis.

Nun testen Sie Ihren Befehl nach gründlichen durchschauen durch und lassen Sie das erste Backup durchlaufen. Der Befehl muss als root ausgeführt werden, damit alle Dateien kopiert werden können. (Achtung: Bei falscher Handhabung kommt es zum Datenverlust)

Sicherung automatisieren

Speichern Sie ihrem rsnc Befehl nun als script in dem root Ordner unter /root/bin/ ab. Dazu können Sie vi benutzen. In dem oben genannten Falle sähe das Script so aus:

#! /bin/sh
rsync -auv --log-file=/var/log/rsync_backup --delete --exclude=/sys --exclude=/tmp --exclude=/proc --exclude=/mnt --exclude=/dev --exclude=/backup / /backup

Um das Script anzulegen geben Sie vi rsync_backup ein. Wenn sich vi geöffnet hat drücken Sie i um in den Eingabemodus zu gelangen. Nachdem Sie das Script eingetippt haben drücken Sie Esc und geben dann :wq ein, gefolgt von einem Enter. Das w steht für write und da q für quit. Damit werden die Daten geschrieben und vi beendet.
Geben Sie nun als root folgenden Befehl ein um dem crondeamon einen neuen Task einzuplanen:

crontab -e

Nun öffnet sich der Editor vi. Drücken Sie nun i um in den Eingabemodus zu gelangen und tippen Sie folgendes ein. Was schon vorhanden ist müssen Sie nicht wiederholen:

SHELL=/bin/sh
* 18 * * 0 /root/bin/rsync_backup

Das * 18 * * 0 steht für jeden Sonntag um 18 Uhr soll der Befehl /root/bin/rsync_backup ausgeführt werden. Wie Sie ihr eigenen Zeitplan erstellen können habe ich weiter unten verlinkt. Drücken Sie nun Esc. Tippen Sie nun :wq ein und bestätigen Sie mit Enter.

Interessante Links zu dem Thema

 

2 Gedanken zu “Regelmäßiges Backup einer Festplatte mit rsync

  1. Man hätte auch ein Software-Raid betreiben können. Dazu benötigt es keinen Raid-Controller. Die meisten MBs im Heimgebrauch besitzen eh nur ein Fake-Raid, was im Prinzip das gleiche wie ein Softwareraid ist.

    • Da gebe ich dir recht. In dem oben genannten Fall ist das Rückspielen des Backups aufwendiger als bei einem RAID. Da aber nur einmal die Woche eine Sicherung durchgeführt wird, können Fehler am System schnell wieder behoben werden durch Rückspielen des Backups.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *