Die Informationen in diesem Kapitel sollen Ihnen helfen, entweder eigene Bootstrap-Dateien zu erstellen, oder die von Bacula erzeugten zu editieren. Da die Bootstrap-Datei automatisch beim ausführen des restore Console-Kommandos, oder wenn Sie Write Bootstrap in den Job-Einträgen der Director-Dienst-Konfiguration angeben, erzeugt wird, brauchen Sie das genaue Format eigentlich nicht wissen.
Die Bootstrap-Datei enthält Informationen im ASCII-Format, die präzise angeben, welche Dateien wiederhergestellt werden sollen, auf welchem Volume sie liegen und wo auf dem Volume. Es ist ein relativ kompaktes Format diese Informationen anzugeben, aber es ist lesbar für Menschen und kann mit einem Texteditor geändert werden.
Das generelle Format der Bootstrap-Datei ist:
<Schlüsselwort> = <Wert>
Wobei jedes Schlüsselwort und sein Wert angeben, welche Dateien wiederhergestellt werden. Genauer gesagt, das Schlüsselwort und sein Wert dienen dazu, zu limitieren welche Dateien wiederhergestellt werden, sie verhalten sich wie ein Filter. Das Fehlen eines Schlüsselwort bedeutet, dass alle Dateien angenommen werden.
In der Bootstrap-Datei werden Leerzeilen und Zeilen beginnent mit # ignoriert.
Es existieren Schlüsselwörter, die die Filterung nach Volume, Client, Job, Fileindex, Session ID, Session Time usw. erlauben.
Je mehr Schlüsselwörter Sie angeben, desto genauer ist die Auswahl der Dateien, die wiederhergestellt werden. Alle Schlüsselwörter werden über UND verknüpft.
Ein Beispiel:
Volume = Test-001 VolSessionId = 1 VolSessionTime = 108927638
veranlasst den Storage-Dienst (oder das bextract Programm), nur die Dateien wiederherzustellen, die auf dem Volume Test-001 vorhanden sind UND eine VolumeSessionID mit 1 haben UND deren VolumeSessionTime gleich 108927638 ist.
Hier ist eine Liste aller erlaubten Schlüsselwörter in der Reihenfolge in der sie auf die auf dem Volume befindlichen Daten angewendet werden:
Für ein beliebiges Volume bedeutet das, dass die drei Werte von Volume-Session-ID, Volume-Session-Time und File-Index zusammen eine einzelne einzigartige Datei auf einem Volume angeben. Diese Datei ist eventuell mehrfach auf dem Volume vorhanden, aber für jedes Vorkommen gibt es eine einzigartige Kombination dieser drei Werte. Diese drei Werte sind für jede Datei in der Katalog-Datenbank gespeichert.
Um eine einzelne Datei wiederherzustellen, ist die Angabe eines Wertes (oder einer Liste von File-Indexen) erforderlich.
Bei der Angabe des Volume ist zu bedenken, dass dies der erste Parameter sein muss. Alle anderen Parameter können in beliebiger Reihenfolge und Anzahl hinter einem Volume-Eintrag angegeben werden.
Mehrere Volume-Einträge können in der selben Bootstrap-Datei vorkommen, aber mit jedem Vorkommen beginnt ein neuer Satz an Filter, gültig für das abgegebene Volume.
Beim verarbeiten der Bootstrap-Datei werden alle Schlüsselwörter unterhalb eines Volume-Eintrags mit UND verknüpft. Also wird:
Volume = Test-01 Client = "My machine" FileIndex = 1
auf alle Dateien auf dem Volume Test-01 UND von Client My machine UND mit dem Fileindex 1 passen.
Mehrfach angegebene Schlüsselwörter werden mit ODER verknüpft. Also wird:
Volume = Test-01 Client = "My machine" Client = "Backup machine" FileIndex = 1
auf alle Dateien auf dem Volume Test-01 UND von Client My machine ODER vom Client Backup machine UND mit dem Fileindex 1 passen.
Für Zahlenwerte können Sie einen Bereich oder eine Liste angeben, für alle anderen Parameter, bis auf Volumes, nur eine Liste. Eine Liste ist gleichbedeutend mit mehrfachen Angaben eines Parameters. Ein Beispiel
Volume = Test-01 Client = "My machine", "Backup machine" FileIndex = 1-20, 35
passt auf alle Dateien auf dem Volume Test-01 UND von Client My machine ODER vom Client Backup machine UND mit dem Fileindex 1 ODER 2 ODER 3 ... ODER 20 ODER 35.
Wie oben erwähnt, können mehrere Volume-Einträge in der selben Bootstrap-Datei stehen. Jedes Vorkommen eines Volume-Eintrags beginnt einen neuen Satz an Filterregeln der auf dem angegebenen Volume angewendet wird und mit weiteren Volume-Einträgen über ODER verknüpft wird.
Als ein Beispiel nehmen wir an, dass wir, mit dem Console-Kommando query , nach dem Satz Volumes fragen, die benötigt werden, um alle Dateien des Clients Rufus wiederherstellen zu können:
Using default Catalog name=MySQL DB=bacula *query Available queries: 1: List Job totals: 2: List where a file is saved: 3: List where the most recent copies of a file are saved: 4: List total files/bytes by Job: 5: List total files/bytes by Volume: 6: List last 10 Full Backups for a Client: 7: List Volumes used by selected JobId: 8: List Volumes to Restore All Files: Choose a query (1-8): 8 Enter Client Name: Rufus +-------+------------------+------------+-----------+----------+------------+ | JobId | StartTime | VolumeName | StartFile | VolSesId | VolSesTime | +-------+------------------+------------+-----------+----------+------------+ | 154 | 2002-05-30 12:08 | test-02 | 0 | 1 | 1022753312 | | 202 | 2002-06-15 10:16 | test-02 | 0 | 2 | 1024128917 | | 203 | 2002-06-15 11:12 | test-02 | 3 | 1 | 1024132350 | | 204 | 2002-06-18 08:11 | test-02 | 4 | 1 | 1024380678 | +-------+------------------+------------+-----------+----------+------------+
Die Ausgabe zeigt uns, dass wir vier Jobs wiederherstellen müssen. Der erste ist eine vollständige Sicherung, und die drei folgenden sind inkrementelle Sicherungen.
Die folgende Bootstrap-Datei wird benötigt um alle Dateien wiederherzustellen:
Volume=test-02 VolSessionId=1 VolSessionTime=1022753312 Volume=test-02 VolSessionId=2 VolSessionTime=1024128917 Volume=test-02 VolSessionId=1 VolSessionTime=1024132350 Volume=test-02 VolSessionId=1 VolSessionTime=1024380678
Als letztes Beispiel nehmen wir an, dass die erste vollständige Sicherung sich über zwei verschiedene Volumes erstreckt. Die Ausgabe des Console-Kommandos query sieht eventuell so aus:
+-------+------------------+------------+-----------+----------+------------+ | JobId | StartTime | VolumeName | StartFile | VolSesId | VolSesTime | +-------+------------------+------------+-----------+----------+------------+ | 242 | 2002-06-25 16:50 | File0003 | 0 | 1 | 1025016612 | | 242 | 2002-06-25 16:50 | File0004 | 0 | 1 | 1025016612 | | 243 | 2002-06-25 16:52 | File0005 | 0 | 2 | 1025016612 | | 246 | 2002-06-25 19:19 | File0006 | 0 | 2 | 1025025494 | +-------+------------------+------------+-----------+----------+------------+
und die folgende Bootstrap-Datei wird benötigt, um diese Dateien wiederherzustellen:
Volume=File0003 VolSessionId=1 VolSessionTime=1025016612 Volume=File0004 VolSessionId=1 VolSessionTime=1025016612 Volume=File0005 VolSessionId=2 VolSessionTime=1025016612 Volume=File0006 VolSessionId=2 VolSessionTime=1025025494
Eine Sache ist vermutlich wissenswert: die Bootstrap-Dateien die automatisch am Ende eines jeden Jobs erzeugt werden, sind nicht so optimiert wie die, die durch das Console-Kommando restore erzeugt werden. Das ist so, weil die Bootstrap-Dateien, die am Ende des Jobs erstellt werden, alle Dateien enthalten, die für diesen Job auf das Volume geschrieben wurden. Die Konsequenz ist, dass alle Dateien die wärend eines inkrementellen oder differenziellen Jobs geschrieben wurden, beim Wiederherstellen zunächst von der vollständigen Sicherung wiederhergestellt werden und dann von der inkrementellen oder differenziellen Sicherung.
Wenn die Bootstrap-Datei für die Wiederherstellung erstellt wird, wird immer nur eine Version der Datei (die aktuellste) zur Wiederherstellung aufgelistet.
Falls Ihr Rechner noch ein bischen Zeit übrig hat, können Sie Ihre Bootstrap-Dateien optimieren, indem Sie das folgende tun:
./bconsole restore client=xxx select all done no quit Backup bootstrap file.
Das wird allerdings nicht funktionieren, wenn Ihr Client mehrere Filesets hat, denn dann wird noch eine weitere Eingabe erforderlich. Das Console-Kommando restore client=xxx select all erstellt den Restore-Dateibaum und wählt alle Dateien aus, done beendet den Auswahlmodus, dann wird die Bootstrap-Datei für diesen Wiederherstellungs-Job geschrieben. Das no beantwortet die Frage Do you want to run this (yes/mod/no). quit beendet das Console-Programm, danach kann die neu erstellte Bootstrap-Datei gesichert werden.
Volume="Vol001" Volume="Vol002" Volume="Vol003" Volume="Vol004" Volume="Vol005"
Wenn Sie nur einen einzigen Job vom Volume lesen wollen, können Sie das durch auswählen der Job-Id tun (Funktion nicht getestet), oder besser noch, Sie geben die VolumeSessionTime und VolumeSessionID an, falls Sie sie wissen. (Die beiden Werte werden auf dem Job-Report ausgegeben und sind in der Katalog-Datenbank zu finden.) Die VolumeSessionTime und VolumeSessionID anzugeben ist auch die Art, wie Bacula Wiederherstellungen durchführt. Eine Bootstrap-Datei kann dann wie folgt aussehen:
Volume="Vol001" VolSessionId=10 VolSessionTime=1080847820
Wenn Sie wissen, wie viele Dateien gesichert wurden (siehe den Job-Report), können Sie die Auswahl enorm beschleunigen, indem Sie der Bootstrap-Datei folgendes hinzufügen (angenommen es waren 157 Dateien):
FileIndex=1-157 Count=157
Letztendlich, wenn Sie auch die File-Nummer wissen, wo auf dem Volume die ausgewählten Dateien liegen, können Sie das bcopy-Programm veranlassen, zum richtigen File auf dem Volumen zu springen, ohne jeden Eintrag lesen zu müssen:
VolFile=20
Bootstrap-Dateien sind weder magisch noch kompliziert. Sie zu lesen und Bacula sinnvoll mit ihnen arbeiten zu lassen *ist* magisch, aber darum brauchen Sie sich nicht kümmern.
Wenn Sie eine *echte* Bootstrap-Datei sehen wollen, starten sie das Console-Programm und geben Sie restore ein, wählen ein paar Dateien aus und antworten mit no, wenn Sie gefragt werden, ob Sie die Wiederherstellung starten wollen. Dann finden Sie die Bootstrap-Datei im Arbeitsverzeichnis des Director-Dienstes (z.B. unter /var/lib/bacula/backup-dir.restore.2.bsr).
eric 2009-05-06