Backup Debian

Permalink

Auf meinem Server sind zur Zeit zwei Arten von Dateien die ich nur ungern verlieren würde. Zum einen meine Streaming-Bibliothek mit Musik und Videos, zum anderen eine kleines Archiv aus Büchern und Artikeln. Um von beidem ein Backup zu haben habe ich die Software Dirvish installiert.

Dirvish kopiert angegebene Ordner auf ein anderes Laufwerk. Der Clou daran ist, dass es nur die Dateien kopiert seit dem vorangegangen Backup geändert oder neu hinzugekommen sind. Für alle anderen Dateien wird ein Verweis, ein sogenannter Hardlink, gesetzt. Dadurch wird nur einmal Speicherplatz benötigt egal wie oft ein Backup von einer Datei gemacht wird. Aus diesem Vorgehen ergeben sich in meinen Augen zwei Vorteile: Das Backup kann man wiederherstellen indem man die Dateien zurückkopiert – spezielle Software ist nicht nötig und alle Dateien sind immer vorhanden – kein hantieren mit differentiellen oder inkrementellen Updates.

Für das Backup sollte ein externer Speicher, eine USB-Festplatte zum Beispiel, verfügbar sein. Diesen sollte man zwischen den Backups auch vom Computer entfernen. Das ist zwar etwas umständlich schützt aber davor das Backup zu beschädigen oder gar zu löschen.

Installation

Von Dirvish gibt es ein fertiges Installationspaket in den Repositories von Debian

aptitude install dervish

Konfiguration

Als Vorbereitung wird für die externe Festplatte ein Mountpoint angelegt:

mkdir /mnt/backup

In diesen wird die Festplatte eingehängt und dann kann man eine Ordnerstruktur für seine Backups anlegen. Ich legen immer einen Ordner für das Backupsystem, hier also dirish, und darin jeweils einen Ordner für jedes System das auf der Festplatte gesichert werden soll:

cd /mnt/backup
mkdir /mnt/backup/dirvish
mkdir /mnt/backup/dirvish/homeserver

Diese Ordner verwendet man dann in der Grundkonfiguration von Dirvish um das Ziel aller Backups anzugeben. Diese Konfiguration befindet sich in der Datei /etc/dirvish/master.conf:

bank:
        /media/backup/dirvish/homeserver
exclude:
        lost+found/
Runall:
        Streaming
        PublicDocuments
expire-default: +360 days

In der Zeile unterhalb von bank wird festgelegt, wo alle Backups abgelegt werden sollen. Mittels exclude lassen sich einzelne Ordner ausschließen und unter Runall legt man die Namen der Backupjobs fest, die ausgeführt werden sollen. expire-default legt fest wie lange ein Backup aufgehoben werden soll.

Die Jobs, die unter Runall aufgeführt sind, werden jeweils in einer eigenen Datei definiert. Diese Dateien liegen auf dem Backupspeicher. Dort in einem Unterordner dirvish innerhalb eines Ordners, der gemäß dem Namen des Jobs benannt sein muss.

cd /media/backup/dirvish/homeserver/ 
mkdir Streaming
mkdir dirvish

Innerhalb einer Datei namens default.conf in diesem Ordner wird angegeben wie der Rechner heißt von dem ein Backup gemacht werden soll (client) und welcher Ordner gespeichert werden soll (tree). xdev schließt Mountpoint innerhalb des zu sichernden Ordners ein oder aus. Ein wert von 1 schließt alle Mountpoints vom Backup aus. Mittels image-default wird angegeben wie der Name des Unterordners für jedes einzelne Backup aufgebaut sein soll. Dabei können Variablen verwendet werden die zum Beispiel das Jahr oder die Stunde in den Namen einfließen lassen.

client: homeserver
tree: /var/streaming 
xdev: 1
image-default: %Y-%m-%d_%H-%M

Einsatz

Bevor ein reguläres Backup ausgeführt werden kann muss jeder einzelne Job einmalig initialisiert werden:

dirvish --vault Streaming --init

Wenn alle Jobs initialisiert sind kann man nun mittels eines einzigen Befehls alle Backups auf den aktuellen Stand bringen:

dirvish-runall

Um nicht wirklich jeden Stand aus den letzten 10 Jahren aufzuheben kann man auch aufräumen:

dirvish-expire

Dieser Befehl löscht gemäß der Aufbewahrungsregel expire-default in der /etc/dirvish/master.conf alle Backups die älter sind als die angegebene Anzahl von Tagen.

Nachwort

Die hier vorgestellten Möglichkeiten sind für den Normalfall schon ausreichend, wer aber besondere Bedürfnisse hat sollte sich die Dokumentation noch einmal ansehen. Zum Beispiel kann man einen Index über den Inhalt der Backups anlegen um diese schnell durchsuchen zu können.