]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/fr/main/bootstrap.tex
Setup fr/console
[bacula/docs] / docs / manuals / fr / main / bootstrap.tex
1 %%
2 %%
3
4 \chapter{The Bootstrap File}
5 \label{BootstrapChapter}
6 \index[general]{File!Bootstrap }
7 \index[general]{Bootstrap File }
8
9 The information in this chapter is provided so that you may either create your
10 own bootstrap files, or so that you can edit a bootstrap file produced by {\bf
11 Bacula}. However, normally the bootstrap file will be automatically created
12 for you during the 
13 \ilink{restore\_command}{_ConsoleChapter} command in the Console program, or
14 by using a 
15 \ilink{ Write Bootstrap}{writebootstrap} record in your Backup
16 Jobs, and thus you will never need to know the details of this file. 
17
18 The {\bf bootstrap} file contains ASCII information that permits precise
19 specification of what files should be restored, what volume they are on,
20 and where they are on the volume. It is a relatively compact
21 form of specifying the information, is human readable, and can be edited with
22 any text editor. 
23
24 \section{Bootstrap File Format}
25 \index[general]{Format!Bootstrap}
26 \index[general]{Bootstrap File Format }
27
28 The general format of a {\bf bootstrap} file is: 
29
30 {\bf \lt{}keyword\gt{}= \lt{}value\gt{}} 
31
32 Where each {\bf keyword} and the {\bf value} specify which files to restore.
33 More precisely the {\bf keyword} and their {\bf values} serve to limit which
34 files will be restored and thus act as a filter. The absence of a keyword
35 means that all records will be accepted. 
36
37 Blank lines and lines beginning with a pound sign (\#) in the bootstrap file
38 are ignored. 
39
40 There are keywords which permit filtering by Volume, Client, Job, FileIndex,
41 Session Id, Session Time, ... 
42
43 The more keywords that are specified, the more selective the specification of
44 which files to restore will be. In fact, each keyword is {\bf AND}ed with
45 other keywords that may be present. 
46
47 For example, 
48
49 \footnotesize
50 \begin{verbatim}
51 Volume = Test-001
52 VolSessionId = 1
53 VolSessionTime = 108927638
54 \end{verbatim}
55 \normalsize
56
57 directs the Storage daemon (or the {\bf bextract} program) to restore only
58 those files on Volume Test-001 {\bf AND} having VolumeSessionId equal to one
59 {\bf AND} having VolumeSession time equal to 108927638. 
60
61 The full set of permitted keywords presented in the order in which they are
62 matched against the Volume records are: 
63
64 \begin{description}
65
66 \item [Volume]
67    \index[general]{Volume }
68    The value field specifies what Volume the following commands apply to.
69    Each Volume specification becomes the current Volume, to which all the
70    following commands apply until a new current Volume (if any) is
71    specified.  If the Volume name contains spaces, it should be enclosed in
72    quotes. At lease one Volume specification is required.
73
74 \item [Count]
75    \index[general]{Count}
76    The value is the total number of files that  will be restored for this Volume.
77    This allows the Storage  daemon to know when to stop reading the Volume.  
78    This value is optional.
79
80 \item [VolFile]
81    \index[general]{VolFile}
82    The value is a file number, a list of file numbers, or a range of file
83    numbers to match on the current Volume.  The file number represents the
84    physical file on the Volume where the data is stored.  For a tape
85    volume, this record is used to position to the correct starting file,
86    and once the tape is past the last specified file, reading will stop.
87
88 \item [VolBlock]
89    \index[general]{VolBlock}
90    The value is a block number, a list of block numbers, or a range of
91    block numbers to match on the current Volume.  The block number
92    represents the physical block within the file on the Volume where the
93    data is stored.
94
95
96 \item [VolSessionTime]
97    \index[general]{VolSessionTime }
98    The value specifies a Volume Session Time to  be matched from the current
99    volume.  
100
101 \item [VolSessionId]
102    \index[general]{VolSessionId }
103    The value specifies a VolSessionId, a list of volume session ids, or a
104    range of volume session ids to be matched from the current Volume.  Each
105    VolSessionId and VolSessionTime pair corresponds to a unique Job that is
106    backed up on the Volume.
107
108 \item [JobId]
109    \index[general]{JobId }
110    The value specifies a JobId, list of JobIds, or range of JobIds  to be
111    selected from the current Volume. Note, the JobId may not be  unique if you
112    have multiple Directors, or if you have reinitialized your  database. The
113    JobId filter works only if you do not run  multiple simultaneous jobs.  
114    This value is optional and not used by Bacula to restore files.
115
116 \item [Job]
117    \index[general]{Job }
118    The value specifies a Job name or list of Job names to  be matched on the
119    current Volume. The Job corresponds to a unique  VolSessionId and
120    VolSessionTime pair. However, the Job is perhaps a  bit more readable by
121    humans. Standard regular expressions (wildcards)  may be used to match Job
122    names. The Job filter works only if you do  not run multiple simultaneous
123    jobs.  
124    This value is optional and not used by Bacula to restore files.
125
126 \item [Client]
127    \index[general]{Client }
128    The value specifies a Client name or list of Clients to  will be matched on
129    the current Volume. Standard regular expressions  (wildcards) may be used to
130    match Client names. The Client filter works  only if you do not run multiple
131    simultaneous jobs.  
132    This value is optional and not used by Bacula to restore files.
133
134 \item [FileIndex]
135    \index[general]{FileIndex}
136    The value specifies a FileIndex, list of FileIndexes,  or range of FileIndexes
137    to be selected from the current Volume.  Each file (data) stored on a Volume
138    within a Session has a unique  FileIndex. For each Session, the first file
139    written is assigned  FileIndex equal to one and incremented for each file
140    backed up.  
141
142    This for a given Volume, the triple VolSessionId, VolSessionTime,  and
143    FileIndex uniquely identifies a file stored on the Volume. Multiple  copies of
144    the same file may be stored on the same Volume, but for  each file, the triple
145    VolSessionId, VolSessionTime, and FileIndex  will be unique. This triple is
146    stored in the Catalog database for  each file.  
147
148    To restore a particular file, this value (or a range of FileIndexes) is
149    required.
150
151 \item [FileRegex]
152    \index[general]{FileRegex}
153    The value is a regular expression.  When specified, only matching
154    filenames will be restored.
155
156 \begin{verbatim}
157    FileRegex=^/etc/passwd(.old)?
158 \end{verbatim}
159
160 \item [Slot]
161    \index[general]{Slot }
162    The value specifies the autochanger slot. There may  be only a single {\bf
163    Slot} specification for each Volume.  
164
165 \item [Stream]
166    \index[general]{Stream }
167    The value specifies a Stream, a list of Streams,  or a range of Streams to be
168    selected from the current Volume.  Unless you really know what you are doing
169    (the internals of  {\bf Bacula}), you should avoid this specification.  
170    This value is optional and not used by Bacula to restore files.
171
172 \item [*JobType]
173    \index[general]{*JobType }
174    Not yet implemented.  
175
176 \item [*JobLevel]
177    \index[general]{*JobLevel }
178    Not yet implemented.  
179 \end{description}
180
181 The {\bf Volume} record is a bit special in that it must be the first record.
182 The other keyword records may appear in any order and any number following a
183 Volume record. 
184
185 Multiple Volume records may be specified in the same bootstrap file, but each
186 one starts a new set of filter criteria for the Volume. 
187
188 In processing the bootstrap file within the current Volume, each filter
189 specified by a keyword is {\bf AND}ed with the next. Thus, 
190
191 \footnotesize
192 \begin{verbatim}
193 Volume = Test-01
194 Client = "My machine"
195 FileIndex = 1
196 \end{verbatim}
197 \normalsize
198
199 will match records on Volume {\bf Test-01} {\bf AND} Client records for {\bf
200 My machine} {\bf AND} FileIndex equal to {\bf one}. 
201
202 Multiple occurrences of the same record are {\bf OR}ed together. Thus, 
203
204 \footnotesize
205 \begin{verbatim}
206 Volume = Test-01
207 Client = "My machine"
208 Client = "Backup machine"
209 FileIndex = 1
210 \end{verbatim}
211 \normalsize
212
213 will match records on Volume {\bf Test-01} {\bf AND} (Client records for {\bf
214 My machine} {\bf OR} {\bf Backup machine}) {\bf AND} FileIndex equal to {\bf
215 one}. 
216
217 For integer values, you may supply a range or a list, and for all other values
218 except Volumes, you may specify a list. A list is equivalent to multiple
219 records of the same keyword. For example, 
220
221 \footnotesize
222 \begin{verbatim}
223 Volume = Test-01
224 Client = "My machine", "Backup machine"
225 FileIndex = 1-20, 35
226 \end{verbatim}
227 \normalsize
228
229 will match records on Volume {\bf Test-01} {\bf AND} {\bf (}Client records for
230 {\bf My machine} {\bf OR} {\bf Backup machine}{\bf )} {\bf AND} {\bf
231 (}FileIndex 1 {\bf OR} 2 {\bf OR} 3 ... {\bf OR} 20 {\bf OR} 35{\bf )}. 
232
233 As previously mentioned above, there may be multiple Volume records in the
234 same bootstrap file. Each new Volume definition begins a new set of filter
235 conditions that apply to that Volume and will be {\bf OR}ed with any other
236 Volume definitions. 
237
238 As an example, suppose we query for the current set of tapes to restore all
239 files on Client {\bf Rufus} using the {\bf query} command in the console
240 program: 
241
242 \footnotesize
243 \begin{verbatim}
244 Using default Catalog name=MySQL DB=bacula
245 *query
246 Available queries:
247      1: List Job totals:
248      2: List where a file is saved:
249      3: List where the most recent copies of a file are saved:
250      4: List total files/bytes by Job:
251      5: List total files/bytes by Volume:
252      6: List last 10 Full Backups for a Client:
253      7: List Volumes used by selected JobId:
254      8: List Volumes to Restore All Files:
255 Choose a query (1-8): 8
256 Enter Client Name: Rufus
257 +-------+------------------+------------+-----------+----------+------------+
258 | JobId | StartTime        | VolumeName | StartFile | VolSesId | VolSesTime |
259 +-------+------------------+------------+-----------+----------+------------+
260 | 154   | 2002-05-30 12:08 | test-02    | 0         | 1        | 1022753312 |
261 | 202   | 2002-06-15 10:16 | test-02    | 0         | 2        | 1024128917 |
262 | 203   | 2002-06-15 11:12 | test-02    | 3         | 1        | 1024132350 |
263 | 204   | 2002-06-18 08:11 | test-02    | 4         | 1        | 1024380678 |
264 +-------+------------------+------------+-----------+----------+------------+
265 \end{verbatim}
266 \normalsize
267
268 The output shows us that there are four Jobs that must be restored. The first
269 one is a Full backup, and the following three are all Incremental backups. 
270
271 The following bootstrap file will restore those files: 
272
273 \footnotesize
274 \begin{verbatim}
275 Volume=test-02
276 VolSessionId=1
277 VolSessionTime=1022753312
278 Volume=test-02
279 VolSessionId=2
280 VolSessionTime=1024128917
281 Volume=test-02
282 VolSessionId=1
283 VolSessionTime=1024132350
284 Volume=test-02
285 VolSessionId=1
286 VolSessionTime=1024380678
287 \end{verbatim}
288 \normalsize
289
290 As a final example, assume that the initial Full save spanned two Volumes. The
291 output from {\bf query} might look like: 
292
293 \footnotesize
294 \begin{verbatim}
295 +-------+------------------+------------+-----------+----------+------------+
296 | JobId | StartTime        | VolumeName | StartFile | VolSesId | VolSesTime |
297 +-------+------------------+------------+-----------+----------+------------+
298 | 242   | 2002-06-25 16:50 | File0003   | 0         | 1        | 1025016612 |
299 | 242   | 2002-06-25 16:50 | File0004   | 0         | 1        | 1025016612 |
300 | 243   | 2002-06-25 16:52 | File0005   | 0         | 2        | 1025016612 |
301 | 246   | 2002-06-25 19:19 | File0006   | 0         | 2        | 1025025494 |
302 +-------+------------------+------------+-----------+----------+------------+
303 \end{verbatim}
304 \normalsize
305
306 and the following bootstrap file would restore those files: 
307
308 \footnotesize
309 \begin{verbatim}
310 Volume=File0003
311 VolSessionId=1
312 VolSessionTime=1025016612
313 Volume=File0004
314 VolSessionId=1
315 VolSessionTime=1025016612
316 Volume=File0005
317 VolSessionId=2
318 VolSessionTime=1025016612
319 Volume=File0006
320 VolSessionId=2
321 VolSessionTime=1025025494
322 \end{verbatim}
323 \normalsize
324
325 \section{Automatic Generation of Bootstrap Files}
326 \index[general]{Files!Automatic Generation of Bootstrap }
327 \index[general]{Automatic Generation of Bootstrap Files }
328
329 One thing that is probably worth knowing: the bootstrap files that are
330 generated automatically at the end of the job are not as optimized as those
331 generated by the restore command. This is because during Incremental and
332 Differential jobs, the records pertaining to the files written for the
333 Job are appended to the end of the bootstrap file.
334 As consequence, all the files saved to an Incremental or Differential job will be
335 restored first by the Full save, then by any Incremental or Differential
336 saves. 
337
338 When the bootstrap file is generated for the restore command, only one copy
339 (the most recent) of each file is restored. 
340
341 So if you have spare cycles on your machine, you could optimize the bootstrap
342 files by doing the following: 
343
344 \footnotesize
345 \begin{verbatim}
346    ./bconsole
347    restore client=xxx select all
348    done
349    no
350    quit
351    Backup bootstrap file.
352 \end{verbatim}
353 \normalsize
354
355 The above will not work if you have multiple FileSets because that will be an
356 extra prompt. However, the {\bf restore client=xxx select all} builds the
357 in-memory tree, selecting everything and creates the bootstrap file. 
358
359 The {\bf no} answers the {\bf Do you want to run this (yes/mod/no)} question. 
360
361 \label{bscanBootstrap}
362 \section{Bootstrap for bscan}
363 \index[general]{bscan}
364 \index[general]{bscan!bootstrap}
365 \index[general]{bscan bootstrap}
366 If you have a very large number of Volumes to scan with {\bf bscan},
367 you may exceed the command line limit (511 characters). I that case,
368 you can create a simple bootstrap file that consists of only the
369 volume names.  An example might be:
370
371 \footnotesize
372 \begin{verbatim}
373 Volume="Vol001"
374 Volume="Vol002"
375 Volume="Vol003"
376 Volume="Vol004"
377 Volume="Vol005"
378 \end{verbatim}
379 \normalsize
380
381
382 \section{A Final Bootstrap Example}
383 \index[general]{Bootstrap Example}
384 \index[general]{Example!Bootstrap}
385
386 If you want to extract or copy a single Job, you can do it by selecting by
387 JobId (code not tested) or better yet, if you know the VolSessionTime and the
388 VolSessionId (printed on Job report and in Catalog), specifying this is by far
389 the best. Using the VolSessionTime and VolSessionId is the way Bacula does
390 restores. A bsr file might look like the following: 
391
392 \footnotesize
393 \begin{verbatim}
394 Volume="Vol001"
395 VolSessionId=10
396 VolSessionTime=1080847820
397 \end{verbatim}
398 \normalsize
399
400 If you know how many files are backed up (on the job report), you can
401 enormously speed up the selection by adding (let's assume there are 157
402 files): 
403
404 \footnotesize
405 \begin{verbatim}
406 FileIndex=1-157
407 Count=157
408 \end{verbatim}
409 \normalsize
410
411 Finally, if you know the File number where the Job starts, you can also cause
412 bcopy to forward space to the right file without reading every record: 
413
414 \footnotesize
415 \begin{verbatim}
416 VolFile=20
417 \end{verbatim}
418 \normalsize
419
420 There is nothing magic or complicated about a BSR file. Parsing it and
421 properly applying it within Bacula *is* magic, but you don't need to worry
422 about that. 
423
424 If you want to see a *real* bsr file, simply fire up the {\bf restore} command
425 in the console program, select something, then answer no when it prompts to
426 run the job. Then look at the file {\bf restore.bsr} in your working
427 directory.