Datensicherung im Alltag

In irgendeinem Forum las ich sinngemäß mal folgenden Spruch:

Es gibt zwei Arten von Menschen: Die, die Backups machen und die, denen noch nie eine Festplatte abgeraucht ist.

Wie wahr diese Weisheit ist weiß ich genau, denn ich gehörte selbst lange Zeit zur zweiten Gruppe. Dies hatte zwei Gründe: Bequemlichkeit und die Unerschwinglichkeit von Datenträgern mit brauchbarer Kapazität.

Dass Bequemlichkeit kein Argument gegen Backups ist, soll dieser Artikel erklären. Außerdem sei angemerkt, dass Datenverlust ohne vorhandenes Backup meistens verdammt unbequem ist.

Der Punkt mit der Unerschwinglichkeit ist im 21. Jahrhundert auch nicht mehr gegeben. Externe wie interne Festplatten kriegt man hinterhergeschmissen, ebenso wie große USB-Speichersticks.

Es ist mir daher wirklich schleierhaft, wie unvorsichtig manche Leute mit ihren Daten sind. Dabei gibt es schöne Mechanismen, mit denen man sehr bequem und auf Wunsch sogar automatisiert Daten sichern kann.

Da lohnt es sich, mal einen Nachmittag fürs Aufsetzen eines Backup-Systemes zu opfern.

Welche Möglichkeiten der Datensicherung gibt es?

Das einfachste wäre wohl, jeden Tag ein cp /home /media/backups auszuführen. Diese sogenannte Volldatensicherung bietet jedoch mehrere Nachteile: Sie benötigt viel Zeit, weil u.U. enorm viele Daten kopiert werden. Außerdem sind damit längst nicht alle Bereiche abgedeckt. Angenehm ist es immer, auch seine Konfigurationsdateien aus /etc/ mitzusichern und vielleicht verstecken sich noch ein paar weitere wichtige Daten an anderer Stelle.

Wegen des erstgenannten Grundes geht dieser Artikel auf die inkrementelle Datensicherung ein. Auch diese setzt zwar zunächst eine Volldatensicherung voraus, jedoch werden ab dann nur noch die Daten gesichert, die seit dem letzten Sicherungsvorgang verändert oder hinzugekommen sind. Dies bietet enorme Einsparungen für Datenverkehr und Zeit.

Was brauche ich für ein inkrementelles Backup?

Linux bietet verschiedene Werkzeuge dafür an. Recht prominent sind rsync und rdiff-backup.

Doch auch hier gibt es den Nachteil, dass beide Programme genau wissen müssen, was wann und wie gesichert werden muss und was nicht. Es gibt daher viele Skripte, die dies vereinfachten. Ich benutze das recht mächtige rbxi, das ich in meiner sidux-Zeit kennen und lieben gelernt habe und möchte es hier vorstellen.

Doch der Reihe nach: Neben der passenden Software müssen natürlich auch entsprechende Hardware-Ressourcen zur Verfügung stehen. Notfalls tut es sicher eine Backup-Partition, besser ist aber in jedem Fall ein eigenes Backup-Laufwerk. Eine Partition hilft zumindest dann, wenn man versehentlich etwas zu viel gelöscht hat oder Linux schnell neu aufsetzen will. Bei einem Hardware-Schaden ist man aber genauso aufgeschmissen.

Ich habe im letzten Jahr meine beiden internen IDE-Festplatten durch ein neues SATA-Laufwerk ersetzt. Eine 160GB-IDE-Platte blieb jedoch im PC und dient nun als Backup-Laufwerk. Die Größe ist für meine Bedürfnisse ideal. Ansonsten bietet sich auch eine externe Festplatte an, denn diese Dinger kosten auch nicht die Welt.

Über rbxi

rbxi ist ein Konsolen-Werkzeug, das Backups via rsync oder rdiff-backup erledigt. Es kann zudem selbstständig Backup-Laufwerke einbinden und Einbindungen wieder lösen. Der Benutzer kann genau angeben, welche Ordner bei der Sicherung übersprungen werden sollen. Dies ist zum Beispiel bei allen temporären Daten praktisch, außerdem bei Verzeichnissen, in denen der Datei-Browser Vorschaubilder und ähnlichen Ballast lagert.

Zugegebenermaßen dauert es ein wenig, das Programm nach seinen Wünschen zu konfigurieren. Danach steht den schnellen Backups jedoch nichts mehr im Wege!

Installation und Konfiguration

Wie man das Programm herunterlädt und installiert, wird genau auf der Projekt-Homepage beschrieben.

Nach dem Entpacken hat man das Skript selbst und den Ordner „rbxi-data“ in dem man alle Konfigurationen vornimmt. Enthalten ist außerdem eine gute Dokumentation im HTML-Format, zusätzlich ist die Konfigurationsdatei rbxi-values mit erklärenden Kommentaren versehen.

In ihr gibt man an, welches Programm zum Sichern benutzt werden soll (in meinem Fall rsync). Ferner muss natürlich angegeben werden, wo die Backups abgelegt werden sollen und ob das Laufwerk dafür gemountet werden soll. Letzteres finde ich sehr angenehm, da man Daten auf eingebundenen Laufwerken naturgemäß eher Schaden anrichten kann, als nicht gemounteten. ;-)

Für mich sehr wichtig ist die Angabe von Daten, die nicht gesichert werden sollen. rbxi liefert dafür eine Sammlung von Text-Dateien, in denen man auflistet, welche Ordner übersprungen werden sollen. Sie sind nach folgendem Schema benannt: excludes-$partition[-$typ].txt

$partition steht dabei wahlweise für home, root und data-1 bis data-10. Für die meisten wichtig sind wohl nur home und root. Nur wer in der Konfiguration der Sicherung weitere Partitionen über data[…] hinzugefügt hat, wird auch die anderen Dateien benötigen.

Zu beachten ist, dass rsync und rdiff-backup jeweils eine andere Syntax erwarten, deshalb gibt es jeweils zwei Textdateien für eine Partition: Wer rsync benutzt, benötigt also nur die Dateien, die auf -rsync.txt enden. Wer rdiff-backup verwendet, nimmt die Dateien, die keinen eigenen Suffix haben.

Wie man die Dateien verwendet, erfährt man, wenn man einfach eine mit einem beliebigen Text-Editor öffnet.

Eine excludes-home-rsync.txt-Datei kann dann zum Beispiel so aussehen:

### cache ###
- **/.mozilla/**/Cache/

### sockets ###
+ **/*.sock/
- **/*.sock
+ **/socket/
- **/socket

### trash ###
- **/.Trash-*
- **.local/share/Trash
- **/lost+found

### thumbnails ###
- **/.thumbnails

### other Stuff ###
- /andre/Musik/

Es werden dadurch der Cache von Firefox, der Inhalt des Papierkorbes, die Vorschaubilder von Dolphin und meine Musik-Dateien nicht gesichert. Das Spart Zeit und Speicherplatz!

Unbedingt sollte man jedoch darauf achten, natürlich all das zu sichern, was man gebrauchen könnte und nicht einfach vorgefertigte Dateien zu kopieren. Besonders gilt das für die excludes-root-rsync.txt. Ich habe sie bei der Standardkonfiguration belassen und folgendes hinzugefügt:

- /bin
- /dev
- /lib
- /lib64
- /sbin
- /srv
- /sys
- /usr
- /var
- /opt/swiftdove
- /opt/java
- /opt/lib32
- /opt/VirtualBox
- /opt/Wine

Dabei sollte jeder unbedingt selbst prüfen, wie sinnvoll es ist, auf einzelne Verzeichnisse zu verzichten. Einige mögen außerdem vielleicht komplett auf /opt/ verzichten. Da ich an dieser Stelle jedoch LAMPP installiert habe und dort meinen PHP-Krempel lagere kommt dies für mich nicht infrage.

Es empfiehlt sich also, rbxi probeweise mindestens einmal durchlaufen zu lassen, um zu sehen, ob wirklich alles notwendige dabei ist und dass unnötiger Ballast vermieden wird. Wer Zeit sparen will oder unsicher ist, worauf er verzichten kann, sollte die Excludes-Dateien einfach lassen, wie sie sind.

rbxi benutzen

rbxi lässt sich bei korrekter Installation im Terminal einfach als Root über rbxi starten (wenn nicht, einfach eine Verknüpfung in /bin/ zum Skript anlegen. Wer nicht weiß, wie das geht, liest sich man ln oder ln --help durch).

Es werden nach dem Start folgende Optionen geboten:

  • backup-normal: Alle Dateien, die seit dem letzten Backup erstellt oder verändert worden, werden gesichert. Gibt es noch kein Backup, wird einmalig ein Vollbackup angelegt – das dauert eine Weile. Übrigens werden gleichzeitig Dateien aus der Datensicherung gelöscht, die inzwischen nicht mehr auf deinem System vorhanden sind. Wenn du heute also ein Backup angelegt hast und anschließend eine Datei oder einen Ordner im Heim-Verzeichnis löschst, wird bei der nächsten Datensicherung diese Datei auch aus dem Backup entfernt.
  • clean-obsolete: Es werden alle Dateien aus dem Backup gelöscht, die inzwischen nicht mehr auf deinem System vorhanden sind. Es werden dabei keine Daten gesichert.
  • backup-and-delete-old: Das alte Backup wird komplett entfernt und ein neues Vollbackup angelegt.
  • quit: Nichts sichern, Programm beenden

Dem geneigten Leser wird aufgefallen sein, dass backup-normal wohl die wichtigste Funktion des Programmes ist: Sie sichert unsere Daten und entsorgt gleichzeitig alten Müll. Startet man rbxi mit dem Befehl rbxi -c wird diese Funktion ohne weitere Nachfragen ausgeführt, was den ganzen Vorgang noch bequemer macht. Apropos bequem:

Das Backup automatisieren

Via Cron-Jobs lässt sich der Backup-Vorgang ganz vorzüglich automatisieren. Man legt dafür ein kleines Bash-Skript an, das etwa so aussehen könnte:

#!/bin/sh
rbxi -c

und an passender Stelle abgespeichert wird. Zum Beispiel als backup.sh im Ordner /etc/cron.daily/ (oder /etc/cron.hourly oder /etc/cron.weekly, je nachdem wie mutig du bist ;-)). Das Skript wird dann in dem Rhythmus ausgeführt, den der Ordner-Name angibt.

Doch Vorsicht: rbxi -c löscht wie gesagt auch alte Dateien aus dem Backup. Im Worst Case mag es also passieren, dass man versehentlich irgendetwas löscht und der Cron-Job startet, bevor man die gelöschten Dateien aus dem Backup zurückkopiert hat. Dann nämlich sichert man den nicht-intakten Zustand! Das ist zwar einigermaßen unwahrscheinlich, wäre aber doch grob ärgerlich.

Ich führe rbxi daher immer per Hand aus, wenn ich mir möglichst sicher bin, dass ein guter Zeitpunkt zum Sichern gekommen ist. Zum Beispiel vor umfangreichen Festplatten-Aufräum-Aktionen.

Wenn man rbxi -c alle ein bis zwei Tage durchlaufen lässt, dauert der gesamte Sicherungsvorgang auf meinem System übrigens rund 45 Sekunden bis 2 Minuten – je nachdem, welche Datenmenge es zu bewältigen gilt. Das System wird dabei auch nicht so ausgelastet, dass Arbeiten nebenher unmöglich wird, doch sollte man darauf achten, seine Arbeiten vor oder nach dem Sichern zu speichern. Andernfalls mag es passieren, dass rbxi eine Fehlermeldung ausspuckt, weil sich eine Datei während des Backup-Vorgangs verändert hat.

Zu guter Letzt

Ich hoffe, dieser Artikel war nicht zu trocken und umfangreich. Andererseits ist Datensicherung ein langweiliges, aber notwendiges Übel, das man nur schwer schönreden kann. ;-)

Wenn jemand noch Anregungen hat: Immer her damit! Letztlich verfügt rbxi wie gesagt aber auch über eine ausgezeichnete Dokumentation und gut kommentierte Konfigurationsdateien.

Ferner ist eine echte Schritt-für-Schritt-Anleitung für ein Thema wie Datensicherung Humbug, da für jedes System eigene Besonderheiten bedacht werden müssen. Nur der Benutzer selbst kann wissen, was und wie er etwas sichern will.

Ein bisschen weitere Lektüre gibt es hier:

Andwils Avatar

~andwil

Geek aus Kiel. Tobt sich hier vor allem über den Open-Source-Kosmos im Allgemeinen (und Linux im Speziellen) sowie Heavy Metal aus.