Login
Newsletter
Werbung

So, 8. Februar 2009, 00:00

Das Backup-Programm BoxBackup

Platzsparendes netzwerkweites Backup

Konfiguration der Clients

Auf jedem Backup-Client muss nun der Daemon bbackupd eingerichtet werden. Jeder Client muss eine eindeutig numerische ID besitzen. Wir werden hier einfach die Zahlen von 1 aufwärts verwenden. Eigentlich wird diese ID hexadezimal angegeben, man muss die Ziffern a bis f aber nicht verwenden und kann, bei einem ausreichend großen Netz, nach der 10 auch gleich die 11 vergeben. Die benötigte ID muss leider von Hand zugewiesen werden, was mit dem Kommando bbstoreaccounts erledigt wird.

bbstoreaccounts create 1 0 2000M 3000M

Hier bedeutet die 1 nach dem create die ID des Clients. Die 0 ist immer anzugeben, wenn ein vorhandenes RAID1 verwendet wird, und die beiden letzten Zahlen sind das weiche und das harte Limit, wieviel Platz der Festplatte der Client auf dem Backup-Server nutzen darf. Es ist sehr wichtig, ein sinnvolles Limit zu setzen, denn nur wenn der belegte Platz über dem weichen Limit liegt, fängt bbstored an, alte Dateien zu löschen. Ich setze hier fürs Erste das weiche Limit auf 2000 MB und das harte auf 3000 MB. Wenn man später sieht, wie hoch der tatsächliche Umfang des Backups jedes Accounts ist, kann man diese Werte noch anpassen. Dazu verwendet man das Kommando setlimit:

bbstoreaccounts setlimit 1 3000M 4000M

Man muss nicht unbedingt von Hand kontrollieren, ob der zugewiesene Platz überschritten wurde. Sobald das harte Limit erreicht ist, erhält man eine Mail von der Software.

Wer keine Lust hat, ständig zwischen Server und Client zu wechseln, und SSH zwischen den Rechnern einsetzen kann, kann auch folgendes Kommando verwenden:

ssh bserver bbstoreaccounts create 1 0 2000M 3000M

Nun legen wir in Grundzügen die Konfiguration des Clients an:

bbackupd-config /etc/boxbackup snapshot 1 bserver /var/lib/bbackupd \
 /boot /etc /home /lib/modules /root /usr/local /var

Dies muss wohl etwas erklärt werden:

  • /etc/boxbackup ist das Konfigurationsverzeichnis
  • snapshot ist der Modus, in dem zu einer bestimmten Zeit, meist einmal am Tag, ein komplettes Backup gemacht wird. Die Alternative ist lazy.
  • 1 ist die Client-ID, wie oben erzeugt
  • bserver ist der Name des Backup-Servers
  • /var/lib/bbackupd ist das Arbeitsverzeichnis von bbackupd. Es sollte bei der Installation schon angelegt worden sein.
  • /etc usw. sind die Namen der zu sichernden Verzeichnisse

Es ist nicht erlaubt, bei den zu sichernden Verzeichnissen den gesamten Verzeichnisbaum / anzugeben. Das scheint auf den ersten Blick lästig, aber man sollte sich ohnehin genau überlegen, was zu sichern ist und was nicht, sonst kommt man leicht in die Situation, dass man mit riesigen Datenmengen unnötig die Kapazität seines Backups sprengt. Oft sollte es genügen, nur die Dateien zu sichern, die nicht mit einer Neuinstallation wieder hergestellt werden können. Das heißt, /bin, /usr und zahlreiche andere Systemverzeichnisse werden nicht gesichert. /boot und /lib/modules werden gesichert, da sie eigene Kernel, Kernelmodule und die Konfiguration des Bootmanagers enthalten können. /home und /root enthalten Benutzerdaten, in /usr/local können selbstinstallierte Dinge ruhen, die nicht Bestandteil der Distribution sind, und /var schließlich enthält teilweise unersetzliche Daten, man denke nur an Datenbankdateien. Allerdings enthält /var auch viel Unnötiges, so dass später noch etwas Feinarbeit nötig ist.

bbackupd-config hat einen Certificate Request für uns angelegt, den wir auf den Rechner mit der CA kopieren und dort signieren lassen müssen. Die resultierenden Dateien müssen wir an die richtige Stelle des Clients zurückkopieren.

scp /etc/boxbackup/bbackupd/1-csr.pem bserver:
ssh bserver bbstored-certs ca sign 1-csr.pem
scp bserver:ca/clients/1-cert.pem /etc/boxbackup/bbackupd
scp bserver:ca/roots/serverCA.pem /etc/boxbackup/bbackupd

Nach Absetzen des ssh-Befehls müssen wir blind (ohne Konsolenausgabe) yes eingeben. Alternativ kann man sich auf dem Server einloggen, bbstored-certs ca sign 1-csr.pem ausführen und dann wieder zurück zum Client gehen.

Die Konfigurationsdatei /etc/boxbackup/bbackupd.conf sollte nun noch angepasst werden. Die Anpassung betrifft nur das Verzeichnis /var, von dem wir nicht alle Unterverzeichnisse sichern wollen. Alles andere wurde von bbackupd-config bereits recht ordentlich konfiguriert. Die zu sichernden Verzeichnisse sind unter BackupLocations zu finden:

BackupLocations
{
 boot
 {
 Path = /boot
 }
 etc
 {
 Path = /etc
 ExcludeFile = /etc/boxbackup/bbackupd/1-FileEncKeys.raw
 }
 home
 {
 Path = /home
 }
 lib-modules
 {
 Path = /lib/modules
 }
 root
 {
 Path = /root
 }
 usr-local
 {
 Path = /usr/local
 }
 var
 {
 Path = /var
 }
}

Wie man sieht, fügt bbackupd-config eine Regel ein, den kryptografischen Schlüssel zur Verschlüsselung des Backups nicht mit zu sichern. Um diesen müssen wir uns später noch kümmern. Doch zunächst fügen wir unter Path = /var folgende Zeilen ein:

 ExcludeFile = /var/account/pacct
 ExcludeDir = /var/cache
 ExcludeDir = /var/lib/apt
 ExcludeDir = /var/lib/dpkg
 ExcludeDir = /var/log
 ExcludeDir = /var/lock
 ExcludeFilesRegex = /var/quota.*
 ExcludeDir = /var/run
 ExcludeDir = /var/tmp

Diese Liste von Dateien und Verzeichnissen dürfte für die meisten Debian-ähnlichen Distributionen ein guter Ausgangspunkt sein. Man sollte natürlich einmal einen Blick in sein /var-Verzeichnis werfen und die Liste anpassen, denn hier gibt es viele individuelle Unterschiede. Insbesondere wenn man den ersten Backup-Lauf gemacht hat und feststellt, dass zuviel gesichert wurde, muss man weitere Zeilen hinzufügen.

Je nachdem, welche Partitionen gemountet sind, kann es auch sinnvoll sein, das Verzeichnis lost+found auszuschließen.

Die Direktiven haben die Bedeutung, die aus dem Namen bereits offensichtlich sein dürfte: ExcludeFile schließt eine spezifische Datei aus, ExcludeDir ein Verzeichnis mit allen Unterverzeichnissen und ExcludeFilesRegex eine Gruppe von Dateien, wobei keine Dateinamen-Platzhalter (*, ?) zum Einsatz kommen, sondern echte reguläre Ausdrücke. Neben diesen Varianten der Exclude-Direktive gibt es noch die gleichen Varianten mit AlwaysInclude, die Dateien einschließen, die ansonsten wegen einer Exclude-Direktive nicht berücksichtigt würden.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung