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 istlazy
.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.