4 \chapter{Die Bootstrap-Datei}
5 \label{BootstrapChapter}
6 \index[general]{Datei!Bootstrap }
7 \index[general]{Bootstrap-Datei }
9 Die Informationen in diesem Kapitel sollen Ihnen helfen, entweder eigene Bootstrap-Dateien
10 zu erstellen, oder die von Bacula erzeugten zu editieren. Da die Bootstrap-Datei automatisch beim ausf\"{u}hren des
11 \ilink{restore}{_ConsoleChapter} Console-Kommandos, oder wenn Sie \ilink{ Write Bootstrap}{writebootstrap}
12 in den Job-Eintr\"{a}gen der Director-Dienst-Konfiguration angeben, erzeugt wird,
13 brauchen Sie das genaue Format eigentlich nicht wissen.
15 Die Bootstrap-Datei enth\"{a}lt Informationen im ASCII-Format,
16 die pr\"{a}zise angeben, welche Dateien wiederhergestellt werden sollen, auf welchem Volume sie liegen
17 und wo auf dem Volume. Es ist ein relativ kompaktes Format diese Informationen anzugeben, aber es ist
18 lesbar f\"{u}r Menschen und kann mit einem Texteditor ge\"{a}ndert werden.
20 \section{Bootstrap-Datei Format}
21 \index[general]{Format!Bootstrap}
22 \index[general]{Bootstrap-Datei Format }
24 Das generelle Format der Bootstrap-Datei ist:
26 {\bf \lt{}Schl\"{u}sselwort\gt{} = \lt{}Wert\gt{}}
28 Wobei jedes Schl\"{u}sselwort und sein Wert angeben, welche Dateien wiederhergestellt werden.
29 Genauer gesagt, das Schl\"{u}sselwort und sein Wert dienen dazu, zu limitieren welche
30 Dateien wiederhergestellt werden, sie verhalten sich wie ein Filter.
31 Das Fehlen eines Schl\"{u}sselwort bedeutet, dass alle Dateien angenommen werden.
33 In der Bootstrap-Datei werden Leerzeilen und Zeilen beginnent mit {\#} ignoriert.
35 Es existieren Schl\"{u}sselw\"{o}rter, die die Filterung nach Volume, Client, Job, Fileindex, Session ID,
36 Session Time usw. erlauben.
38 Je mehr Schl\"{u}sselw\"{o}rter Sie angeben, desto genauer ist die Auswahl der Dateien, die wiederhergestellt werden.
39 Alle Schl\"{u}sselw\"{o}rter werden \"{u}ber {\bf UND} verkn\"{u}pft.
47 VolSessionTime = 108927638
51 veranlasst den Storage-Dienst (oder das {\bf bextract} Programm), nur die Dateien wiederherzustellen, die
52 auf dem Volume Test-001 vorhanden sind {\bf UND} eine VolumeSessionID mit 1 haben {\bf UND} deren VolumeSessionTime
55 Hier ist eine Liste aller erlaubten Schl\"{u}sselw\"{o}rter in der Reihenfolge in der sie auf
56 die auf dem Volume befindlichen Daten angewendet werden:
61 \index[general]{Volume }
62 Dieser Wert gibt an, auf welches Volume die folgenden Schl\"{u}sselw\"{o}rter angewendet werden sollen.
63 Falls in der Bootstrap-Datei ein zweites Volume angegeben wird, beziehen sich die darauf folgenden
64 Schl\"{u}sselw\"{o}rter auf dieses Volume.
65 Wenn der Name des Volumes Leerzeichen enth\"{a}lt, muss er in Anf\"{u}hrungszeichen gesetzt werden.
66 Mindestens ein Volume muss angegeben werden.
69 \index[general]{Count}
70 Dieser Wert ist die Gesamtanzahl der Dateien, die von dem Volume gelesen werden sollen.
71 Daran erkennt der Storage-Dienst, wann er das Lesen beenden soll.
72 Dieser Wert ist optional.
75 \index[general]{VolFile}
76 Dieser Wert gibt eine Dateinummer oder eine Liste bzw. einen Bereich von Dateinummern an,
77 die auf dem aktuellen Volume gefunden werden soll. Die Dateinummer stellt die physikalische
78 Datei auf dem Volume da, wo die Daten gespeichert sind. Bei einem Tape wird dieser Wert benutzt,
79 um das Band richtig zu positionieren und wenn das Laufwerk die letzte angegebene Datei gelesen hat,
80 wird der Lesevorgang gestoppt.
83 \index[general]{VolBlock}
84 Dieser Wert gibt eine Blocknummer oder eine Liste bzw. einen Bereich von Blocknummern an,
85 die auf dem aktuellen Volume gefunden werden soll. Die Blocknummer stellt die physikalischen
86 Bl\"{o}cke auf dem Volume da, wo die Daten gespeichert sind.
88 \item [VolSessionTime]
89 \index[general]{VolSessionTime }
90 Dieser Wert gibt die Volume-Session-Zeit an, die auf dem aktuellen Volume gefunden werden soll.
93 \index[general]{VolSessionId }
94 Dieser Wert gibt eine Volume-Session-ID oder eine Liste bzw. einen Bereich von Volume-Sesion-IDs an,
95 die auf dem aktuellen Volume gefunden werden soll. Jedes Paar aus Volume-Session-ID und Volume-Session-Zeit,
96 stimmt mit einem einzelnen Job \"{u}berein, der auf dem Volume gespeichert ist.
99 \index[general]{JobId }
100 Dieser Wert gibt eine Job-ID oder eine Liste bzw. einen Bereich von Job-Ids an,
101 die auf dem aktuellen Volume gefunden werden soll. Beachten Sie bitte, dass die Job-ID
102 eventuell nicht eindeutig ist, falls Sie mehrere Director-Dienste haben, oder falls Sie
103 Ihre Datenbank neu initialisiert haben sollten. Der Job-ID-Filter funktioniert nicht, wenn
104 Sie mehrere Jobs gleichzeitig haben laufen lassen.
105 Dieser Wert ist optional und wird von Bacula nicht zum zur\"{u}cksichern ben\"{o}tigt.
108 \index[general]{Job }
109 Dieser Wert gibt einen Job-Namen oder eine Liste von Job-Namen an, die auf dem aktuellen
110 Volume gefunden werden sollen. Der Job-Name stimmt mit einem einzigartigen Paar aus Volume-Session-Zeit
111 und VolumeSessionID \"{u}berein, allerdings ist er f\"{u}r Menschen ein bischen leichter zu lesen.
112 Gew\"{o}hnliche regul\"{a}re Ausdr\"{u}cke k\"{o}nnen benutzt werden, um einen entsprechenden Job-Namen zu finden.
113 Der Job-Name-Filter funktioniert nicht, wenn Sie mehrere Jobs gleichzeitig haben laufen lassen.
114 Dieser Wert ist optional und wird von Bacula nicht zum zur\"{u}cksichern ben\"{o}tigt.
117 \index[general]{Client }
118 Dieser Wert gibt einen Client-Namen oder eine Liste von Client-Namen an, dia auf dem aktuellen
119 Volume gefunden werden soll. Gew\"{o}hnliche regul\"{a}re Ausdr\"{u}cke k\"{o}nnen benutzt werden,
120 um einen entsprechenden Job-Namen zu finden. Der Client-Filter funktioniert nicht,
121 wenn Sie mehrere Jobs gleichzeitig haben laufen lassen.
122 Dieser Wert ist optional und wird von Bacula nicht zum zur\"{u}cksichern ben\"{o}tigt.
125 \index[general]{FileIndex }
126 Dieser Wert gibt einen File-Index oder eine Liste bzw. einen Bereich von File-Indexen an,
127 die auf dem aktuellen Volume gefunden werden soll. Jedes File (Datei) das auf einem Volume gespeichert ist,
128 hat f\"{u}r seine Session einen einzigartigen File-Index. Bei jeder Session wird f\"{u}r das erste
129 gespeicherte File der File-Index auf eins gesetzt und dann mit jedem weiteren File um eins erh\"{o}ht.
131 F\"{u}r ein beliebiges Volume bedeutet das, dass die drei Werte von Volume-Session-ID, Volume-Session-Time
132 und File-Index zusammen eine einzelne einzigartige Datei auf einem Volume angeben. Diese Datei ist eventuell
133 mehrfach auf dem Volume vorhanden, aber f\"{u}r jedes Vorkommen gibt es eine einzigartige Kombination
134 dieser drei Werte. Diese drei Werte sind f\"{u}r jede Datei in der Katalog-Datenbank gespeichert.
136 Um eine einzelne Datei wiederherzustellen, ist die Angabe eines Wertes (oder einer Liste von File-Indexen)
140 \index[general]{FileRegex }
141 Hier k\"{o}nnen Sie einen regul\"{a}ren Ausdruck angeben, um nur Dateien wiederherzustellen,
142 auf die diesen Ausdruck passt.
145 \index[general]{Slot }
146 Dieser Wert gibt den Autochanger-Slot an. F\"{u}r jedes Volume darf nur ein Slot angegeben werden.
149 \index[general]{Stream }
150 Dieser Wert gibt einen Stream (Strom) oder eine Liste bzw. einen Bereich von Streams an.
151 Solange Sie nicht wirklich wissen, was Sie tun, (wenn Sie das interne Arbeiten von Bacula kennen),
152 sollten Sie auf diese Angabe verzichten.
153 Dieser Wert ist optional und wird von Bacula nicht zum zur\"{u}cksichern ben\"{o}tigt.
156 \index[general]{*JobType }
157 Noch nicht implementiert.
160 \index[general]{*JobLevel }
161 Noch nicht implementiert.
164 Bei der Angabe des Volume ist zu bedenken, dass dies der erste Parameter sein muss.
165 Alle anderen Parameter k\"{o}nnen in beliebiger Reihenfolge und Anzahl hinter einem
166 Volume-Eintrag angegeben werden.
168 Mehrere Volume-Eintr\"{a}ge k\"{o}nnen in der selben Bootstrap-Datei vorkommen,
169 aber mit jedem Vorkommen beginnt ein neuer Satz an Filter, g\"{u}ltig f\"{u}r
170 das abgegebene Volume.
172 Beim verarbeiten der Bootstrap-Datei werden alle Schl\"{u}sselw\"{o}rter
173 unterhalb eines Volume-Eintrags mit {\bf UND} verkn\"{u}pft.
179 Client = "My machine"
184 auf alle Dateien auf dem Volume Test-01 {\bf UND} von Client My machine
185 {\bf UND} mit dem Fileindex 1 passen.
187 Mehrfach angegebene Schl\"{u}sselw\"{o}rter werden mit {\bf ODER} verkn\"{u}pft.
193 Client = "My machine"
194 Client = "Backup machine"
199 auf alle Dateien auf dem Volume Test-01 {\bf UND} von Client My machine
200 {\bf ODER} vom Client Backup machine {\bf UND} mit dem Fileindex 1 passen.
202 F\"{u}r Zahlenwerte k\"{o}nnen Sie einen Bereich oder eine Liste angeben,
203 f\"{u}r alle anderen Parameter, bis auf Volumes, nur eine Liste.
204 Eine Liste ist gleichbedeutend mit mehrfachen Angaben eines Parameters.
210 Client = "My machine", "Backup machine"
215 passt auf alle Dateien auf dem Volume Test-01 {\bf UND} von Client My machine
216 {\bf ODER} vom Client Backup machine {\bf UND} mit dem Fileindex 1 {\bf ODER}
217 2 {\bf ODER} 3 ... {\bf ODER} 20 {\bf ODER} 35.
219 Wie oben erw\"{a}hnt, k\"{o}nnen mehrere Volume-Eintr\"{a}ge in der selben
220 Bootstrap-Datei stehen. Jedes Vorkommen eines Volume-Eintrags beginnt einen neuen
221 Satz an Filterregeln der auf dem angegebenen Volume angewendet wird und mit weiteren
222 Volume-Eintr\"{a}gen \"{u}ber {\bf ODER} verkn\"{u}pft wird.
224 Als ein Beispiel nehmen wir an, dass wir, mit dem Console-Kommando {\bf query} ,
225 nach dem Satz Volumes fragen, die ben\"{o}tigt werden, um alle Dateien des Clients Rufus
226 wiederherstellen zu k\"{o}nnen:
230 Using default Catalog name=MySQL DB=bacula
234 2: List where a file is saved:
235 3: List where the most recent copies of a file are saved:
236 4: List total files/bytes by Job:
237 5: List total files/bytes by Volume:
238 6: List last 10 Full Backups for a Client:
239 7: List Volumes used by selected JobId:
240 8: List Volumes to Restore All Files:
241 Choose a query (1-8): 8
242 Enter Client Name: Rufus
243 +-------+------------------+------------+-----------+----------+------------+
244 | JobId | StartTime | VolumeName | StartFile | VolSesId | VolSesTime |
245 +-------+------------------+------------+-----------+----------+------------+
246 | 154 | 2002-05-30 12:08 | test-02 | 0 | 1 | 1022753312 |
247 | 202 | 2002-06-15 10:16 | test-02 | 0 | 2 | 1024128917 |
248 | 203 | 2002-06-15 11:12 | test-02 | 3 | 1 | 1024132350 |
249 | 204 | 2002-06-18 08:11 | test-02 | 4 | 1 | 1024380678 |
250 +-------+------------------+------------+-----------+----------+------------+
254 Die Ausgabe zeigt uns, dass wir vier Jobs wiederherstellen m\"{u}ssen.
255 Der erste ist eine vollst\"{a}ndige Sicherung, und die drei folgenden sind inkrementelle Sicherungen.
257 Die folgende Bootstrap-Datei wird ben\"{o}tigt um alle Dateien wiederherzustellen:
263 VolSessionTime=1022753312
266 VolSessionTime=1024128917
269 VolSessionTime=1024132350
272 VolSessionTime=1024380678
276 Als letztes Beispiel nehmen wir an, dass die erste vollst\"{a}ndige Sicherung sich
277 \"{u}ber zwei verschiedene Volumes erstreckt. Die Ausgabe des Console-Kommandos
278 {\bf query} sieht eventuell so aus:
282 +-------+------------------+------------+-----------+----------+------------+
283 | JobId | StartTime | VolumeName | StartFile | VolSesId | VolSesTime |
284 +-------+------------------+------------+-----------+----------+------------+
285 | 242 | 2002-06-25 16:50 | File0003 | 0 | 1 | 1025016612 |
286 | 242 | 2002-06-25 16:50 | File0004 | 0 | 1 | 1025016612 |
287 | 243 | 2002-06-25 16:52 | File0005 | 0 | 2 | 1025016612 |
288 | 246 | 2002-06-25 19:19 | File0006 | 0 | 2 | 1025025494 |
289 +-------+------------------+------------+-----------+----------+------------+
293 und die folgende Bootstrap-Datei wird ben\"{o}tigt, um diese Dateien wiederherzustellen:
299 VolSessionTime=1025016612
302 VolSessionTime=1025016612
305 VolSessionTime=1025016612
308 VolSessionTime=1025025494
312 \section{automatische Erzeugung der Bootstrap-Datei}
313 \index[general]{Datei!automatische Erzeugung der Bootstrap-}
314 \index[general]{automatische Erzeugung der Bootstrap-Datei }
317 Eine Sache ist vermutlich wissenswert: die Bootstrap-Dateien die automatisch
318 am Ende eines jeden Jobs erzeugt werden, sind nicht so optimiert wie die, die
319 durch das Console-Kommando {\bf restore} erzeugt werden.
320 Das ist so, weil die Bootstrap-Dateien, die am Ende des Jobs erstellt werden,
321 alle Dateien enthalten, die f\"{u}r diesen Job auf das Volume geschrieben wurden.
322 Die Konsequenz ist, dass alle Dateien die w\"{a}rend eines inkrementellen oder differenziellen
323 Jobs geschrieben wurden, beim Wiederherstellen zun\"{a}chst von der vollst\"{a}ndigen Sicherung
324 wiederhergestellt werden und dann von der inkrementellen oder differenziellen Sicherung.
326 Wenn die Bootstrap-Datei f\"{u}r die Wiederherstellung erstellt wird,
327 wird immer nur eine Version der Datei (die aktuellste) zur Wiederherstellung aufgelistet.
329 Falls Ihr Rechner noch ein bischen Zeit \"{u}brig hat, k\"{o}nnen Sie Ihre
330 Bootstrap-Dateien optimieren, indem Sie das folgende tun:
335 restore client=xxx select all
339 Backup bootstrap file.
343 Das wird allerdings nicht funktionieren, wenn Ihr Client mehrere Filesets hat,
344 denn dann wird noch eine weitere Eingabe erforderlich.
345 Das Console-Kommando {\bf restore client=xxx select all} erstellt den Restore-Dateibaum
346 und w\"{a}hlt alle Dateien aus, {\bf done} beendet den Auswahlmodus, dann wird die Bootstrap-Datei f\"{u}r diesen
347 Wiederherstellungs-Job geschrieben.
348 Das {\bf no} beantwortet die Frage {\bf Do you want to run this (yes/mod/no)}.
349 {\bf quit} beendet das Console-Programm, danach kann die neu erstellte Bootstrap-Datei gesichert werden.
351 \label{bscanBootstrap}
352 \section{Bootstrap-Datei f\"{u}r bscan}
353 \index[general]{bscan}
354 \index[general]{bscan!Bootstrap-Datei}
355 \index[general]{bscan Bootstrap-Datei}
356 Wenn Sie mit dem bscan-Programm sehr viele Volumes abfragen m\"{u}ssen,
357 wird Ihr Kommando eventuell das Limit der Kommandozeilel\"{a}nge \"{u}berschreiten (511 Zeichen).
358 In dem Fall, k\"{o}nnen Sie eine einfache Bootstrap-Datei erzeugen, die nur Volume-Namen enth\"{a}lt.
372 \section{ein weiteres Beispiel der Bootstrap-Datei}
373 \index[general]{Beispiel ein weiteres!Bootstrap-Datei }
374 \index[general]{ein weiteres Beispiel der Bootstrap-Datei }
376 Wenn Sie nur einen einzigen Job vom Volume lesen wollen, k\"{o}nnen Sie das
377 durch ausw\"{a}hlen der Job-Id tun (Funktion nicht getestet), oder besser noch,
378 Sie geben die VolumeSessionTime und VolumeSessionID an, falls Sie sie wissen.
379 (Die beiden Werte werden auf dem Job-Report ausgegeben und sind in der Katalog-Datenbank
381 Die VolumeSessionTime und VolumeSessionID anzugeben ist auch die Art,
382 wie Bacula Wiederherstellungen durchf\"{u}hrt.
383 Eine Bootstrap-Datei kann dann wie folgt aussehen:
389 VolSessionTime=1080847820
393 Wenn Sie wissen, wie viele Dateien gesichert wurden (siehe den Job-Report),
394 k\"{o}nnen Sie die Auswahl enorm beschleunigen, indem Sie der Bootstrap-Datei
395 folgendes hinzuf\"{u}gen (angenommen es waren 157 Dateien):
404 Letztendlich, wenn Sie auch die File-Nummer wissen, wo auf dem Volume die
405 ausgew\"{a}hlten Dateien liegen, k\"{o}nnen Sie das bcopy-Programm veranlassen,
406 zum richtigen File auf dem Volumen zu springen, ohne jeden Eintrag lesen zu m\"{u}ssen:
414 Bootstrap-Dateien sind weder magisch noch kompliziert. Sie zu lesen und Bacula sinnvoll mit ihnen
415 arbeiten zu lassen *ist* magisch, aber darum brauchen Sie sich nicht k\"{u}mmern.
417 Wenn Sie eine *echte* Bootstrap-Datei sehen wollen, starten sie das Console-Programm und geben Sie
418 {\bf restore} ein, w\"{a}hlen ein paar Dateien aus und antworten mit {\bf no},
419 wenn Sie gefragt werden, ob Sie die Wiederherstellung starten wollen. Dann finden Sie die Bootstrap-Datei
420 im Arbeitsverzeichnis des Director-Dienstes (z.B. unter /var/lib/bacula/backup-dir.restore.2.bsr).