]> git.sur5r.net Git - bacula/docs/blob - docs/manual/tutorial.tex
d209119dd6fceba07352ff143d41874259b89fe4
[bacula/docs] / docs / manual / tutorial.tex
1 %%
2 %%
3
4 \section*{A Brief Tutorial}
5 \label{_ChapterStart1}
6 \index[general]{Brief Tutorial }
7 \index[general]{Tutorial!Brief }
8 \addcontentsline{toc}{section}{Brief Tutorial}
9
10 This chapter will guide you through running Bacula. To do so, we assume you
11 have installed Bacula, possibly in a single file as shown in the previous
12 chapter, in which case, you can run Bacula as non-root for these tests.
13 However, we assume that you have not changed the .conf files. If you have
14 modified the .conf files, please go back and uninstall Bacula, then reinstall
15 it, but do not make any changes. The examples in this chapter use the default
16 configuration files, and will write the volumes to disk in your {\bf /tmp}
17 directory, in addition, the data backed up will be the source directory where
18 you built Bacula. As a consequence, you can run all the Bacula daemons for
19 these tests as non-root. Please note, in production, your File daemon(s) must
20 run as root. See the Security chapter for more information on this subject. 
21
22 The general flow of running Bacula is: 
23
24 \begin{enumerate}
25 \item cd \lt{}install-directory\gt{}  
26 \item Start the Database (if using MySQL or PostgreSQL)  
27 \item Start the Daemons with {\bf ./bacula start}  
28 \item Start the Console program to interact with the Director  
29 \item Run a job  
30 \item When the Volume fills, unmount the Volume, if it is a  tape, label a new
31    one, and continue running. In this  chapter, we will write only to disk files
32    so you won't  need to worry about tapes for the moment. 
33 \item Test recovering some files from the Volume just written to  ensure the
34    backup is good and that you know how to recover.  Better test before disaster
35    strikes  
36 \item Add a second client. 
37    \end{enumerate}
38
39 Each of these steps is described in more detail below. 
40
41 \subsection*{Before Running Bacula}
42 \index[general]{Bacula!Before Running }
43 \index[general]{Before Running Bacula }
44 \addcontentsline{toc}{subsection}{Before Running Bacula}
45
46 Before running Bacula for the first time in production, we recommend that you
47 run the {\bf test} command in the {\bf btape} program as described in the 
48 \ilink{Utility Program Chapter}{btape} of this manual. This will
49 help ensure that Bacula functions correctly with your tape drive. If you have
50 a modern HP, Sony, or Quantum DDS or DLT tape drive running on Linux or
51 Solaris, you can probably skip this test as Bacula is well tested with these
52 drives and systems. For all other cases, you are {\bf strongly} encouraged to
53 run the test before continuing. {\bf btape} also has a {\bf fill} command that
54 attempts to duplicate what Bacula does when filling a tape and writing on the
55 next tape. You should consider trying this command as well, but be forewarned,
56 it can take hours (about 4 hours on my drive) to fill a large capacity tape. 
57
58 \subsection*{Starting the Database}
59 \label{StartDB}
60 \index[general]{Starting the Database }
61 \index[general]{Database!Starting the }
62 \addcontentsline{toc}{subsection}{Starting the Database}
63
64 If you are using MySQL or PostgreSQL as the Bacula database, you should start
65 it before you attempt to run a job to avoid getting error messages from Bacula
66 when it starts. The scripts {\bf startmysql} and {\bf stopmysql} are what I
67 (Kern) use to start and stop my local MySQL. Note, if you are using SQLite,
68 you will not want to use {\bf startmysql} or {\bf stopmysql}. If you are
69 running this in production, you will probably want to find some way to
70 automatically start MySQL or PostgreSQL after each system reboot. 
71
72 If you are using SQLite (i.e. you specified the {\bf \verb:--:with-sqlite=xxx} option
73 on the {\bf ./configure} command, you need do nothing. SQLite is automatically
74 started by {\bf Bacula}. 
75
76 \subsection*{Starting the Daemons}
77 \label{StartDaemon}
78 \index[general]{Starting the Daemons }
79 \index[general]{Daemons!Starting the }
80 \addcontentsline{toc}{subsection}{Starting the Daemons}
81
82 Assuming you have built from source or have installed the rpms,
83 to start the three daemons, from your installation directory, simply enter: 
84
85 ./bacula start 
86
87 The {\bf bacula} script starts the Storage daemon, the File daemon, and the
88 Director daemon, which all normally run as daemons in the background. If you
89 are using the autostart feature of Bacula, your daemons will either be
90 automatically started on reboot, or you can control them individually with the
91 files {\bf bacula-dir}, {\bf bacula-fd}, and {\bf bacula-sd}, which are
92 usually located in {\bf /etc/init.d}, though the actual location is system
93 dependent. 
94 Some distributions may do this differently.
95
96 Note, on Windows, currently only the File daemon is ported, and it must be
97 started differently. Please see the 
98 \ilink{Windows Version of Bacula}{_ChapterStart7} Chapter of this
99 manual. 
100
101 The rpm packages configure the daemons to run as user=root and group=bacula.
102 The rpm installation also creates the group bacula if it does not exist on the
103 system. Any users that you add to the group bacula will have access to files
104 created by the daemons. To disable or alter this behavior edit the daemon
105 startup scripts: 
106
107 \begin{itemize}
108 \item /etc/bacula/bacula 
109 \item /etc/init.d/bacula-dir 
110 \item /etc/init.d/bacula-sd 
111 \item /etc/init.d/bacula-fd 
112    \end{itemize}
113
114 and then restart as noted above. 
115
116 The 
117 \ilink{installation chapter}{_ChapterStart17} of this manual
118 explains how you can install scripts that will automatically restart the
119 daemons when the system starts. 
120
121 \subsection*{Interacting with the Director to Query or Start Jobs}
122 \index[general]{Jobs!Interacting with the Director to Query or Start }
123 \index[general]{Interacting with the Director to Query or Start Jobs }
124 \addcontentsline{toc}{subsection}{Interacting with the Director to Query or
125 Start Jobs}
126
127 To communicate with the director and to query the state of Bacula or run jobs,
128 from the top level directory, simply enter: 
129
130 ./bconsole 
131
132 Alternatively to running the command line console, if you have
133 GNOME installed and used the {\bf \verb:--:enable-gnome} on the configure command,
134 you may use the GNOME Console program: 
135
136 ./gnome-console 
137
138 Another possibilty is to run the wxWidgets program {\bf wx-console}.
139
140 For simplicity, here we will describe only the {\bf ./bconsole} program. Most
141 of what is described here applies equally well to {\bf ./gnome-console}
142 and to {\bf wx-console}
143
144 The {\bf ./bconsole} runs the Bacula Console program, which connects to the
145 Director daemon. Since Bacula is a network program, you can run the Console
146 program anywhere on your network. Most frequently, however, one runs it on the
147 same machine as the Director. Normally, the Console program will print
148 something similar to the following: 
149
150 \footnotesize
151 \begin{verbatim}
152 [kern@polymatou bin]$ ./bconsole
153 Connecting to Director lpmatou:9101
154 1000 OK: HeadMan Version: 1.30 (28 April 2003)
155 *
156 \end{verbatim}
157 \normalsize
158
159 the asterisk is the console command prompt. 
160
161 Type {\bf help} to see a list of available commands: 
162
163 \footnotesize
164 \begin{verbatim}
165 *help
166   Command    Description
167   =======    ===========
168   add        add media to a pool
169   autodisplay autodisplay [on/off] -- console messages
170   automount  automount [on/off] -- after label
171   cancel     cancel job=nnn -- cancel a job
172   create     create DB Pool from resource
173   delete     delete [pool=<pool-name> | media volume=<volume-name>]
174   estimate   performs FileSet estimate debug=1 give full listing
175   exit       exit = quit
176   help       print this command
177   label      label a tape
178   list       list [pools | jobs | jobtotals | media <pool> |
179              files jobid=<nn>]; from catalog
180   llist      full or long list like list command
181   messages   messages
182   mount      mount <storage-name>
183   prune      prune expired records from catalog
184   purge      purge records from catalog
185   query      query catalog
186   quit       quit
187   relabel    relabel a tape
188   release    release <storage-name>
189   restore    restore files
190   run        run <job-name>
191   setdebug   sets debug level
192   show       show (resource records) [jobs | pools | ... | all]
193   sqlquery   use SQL to query catalog
194   status     status [storage | client]=<name>
195   time       print current time
196   unmount    unmount <storage-name>
197   update     update Volume or Pool
198   use        use catalog xxx
199   var        does variable expansion
200   version    print Director version
201   wait       wait until no jobs are running
202 *
203 \end{verbatim}
204 \normalsize
205
206 Details of the console program's commands are explained in the 
207 \ilink{Console Chapter}{_ConsoleChapter} of this manual. 
208
209 \subsection*{Running a Job}
210 \label{Running}
211 \index[general]{Job!Running a }
212 \index[general]{Running a Job }
213 \addcontentsline{toc}{subsection}{Running a Job}
214
215 At this point, we assume you have done the following: 
216
217 \begin{itemize}
218 \item Configured Bacula with {\bf ./configure \verb:--:your-options} 
219 \item Built Bacula using {\bf make} 
220 \item Installed Bacula using {\bf make install} 
221 \item Have created your database with, for example,  {\bf
222    ./create\_sqlite\_database} 
223 \item Have created the Bacula database tables with,  {\bf
224    ./make\_bacula\_tables} 
225 \item Have possibly edited your {\bf bacula-dir.conf} file  to personalize it
226    a bit. BE CAREFUL! if you change the  Director's name or password, you will
227    need to make similar  modifications in the other .conf files. For the moment
228    it is  probably better to make no changes.  
229 \item You have started Bacula with {\bf ./bacula start}  
230 \item You have invoked the Console program with {\bf ./bconsole} 
231 \end{itemize}
232
233 Furthermore, we assume for the moment you are using the default configuration
234 files. 
235
236 At this point, enter the following command: 
237
238 \footnotesize
239 \begin{verbatim}
240 show filesets
241 \end{verbatim}
242 \normalsize
243
244 and you should get something similar to: 
245
246 \footnotesize
247 \begin{verbatim}
248 FileSet: name=Full Set
249       O M
250       N
251       I /home/kern/bacula/regress/build
252       N
253       E /proc
254       E /tmp
255       E /.journal
256       E /.fsck
257       N
258 FileSet: name=Catalog
259       O M
260       N
261       I /home/kern/bacula/regress/working/bacula.sql
262       N
263 \end{verbatim}
264 \normalsize
265
266 This is a pre-defined {\bf FileSet} that will backup the Bacula source
267 directory. The actual directory names printed should correspond to your system
268 configuration. For testing purposes, we have chosen a directory of moderate
269 size (about 40 Megabytes) and complexity without being too big. The FileSet
270 {\bf Catalog} is used for backing up Bacula's catalog and is not of interest
271 to us for the moment. The {\bf I} entries are the files or directories that
272 will be included in the backup and the {\bf E} are those that will be
273 excluded, and the {\bf O} entries are the options specified for
274 the FileSet. You can change what is backed up by editing {\bf bacula-dir.conf}  
275 and changing the {\bf File =} line in the {\bf FileSet} resource.
276
277 Now is the time to run your first backup job. We are going to backup your
278 Bacula source directory to a File Volume in your {\bf /tmp} directory just to
279 show you how easy it is. Now enter: 
280
281 \footnotesize
282 \begin{verbatim}
283 status dir
284 \end{verbatim}
285 \normalsize
286
287 and you should get the following output: 
288
289 \footnotesize
290 \begin{verbatim}
291 rufus-dir Version: 1.30 (28 April 2003)
292 Daemon started 28-Apr-2003 14:03, 0 Jobs run.
293 Console connected at 28-Apr-2003 14:03
294 No jobs are running.
295 Level          Type     Scheduled          Name
296 =================================================================
297 Incremental    Backup   29-Apr-2003 01:05  Client1
298 Full           Backup   29-Apr-2003 01:10  BackupCatalog
299 ====
300 \end{verbatim}
301 \normalsize
302
303 where the times and the Director's name will be different according to your
304 setup. This shows that an Incremental job is scheduled to run for the Job {\bf
305 Client1} at 1:05am and that at 1:10, a {\bf BackupCatalog} is scheduled to
306 run. Note, you should probably change the name {\bf Client1} to be the name of
307 your machine, if not, when you add additional clients, it will be very
308 confusing. For my real machine, I use {\bf Rufus} rather than {\bf Client1} as
309 in this example. 
310
311 Now enter: 
312
313 \footnotesize
314 \begin{verbatim}
315 status client
316 \end{verbatim}
317 \normalsize
318
319 and you should get something like: 
320
321 \footnotesize
322 \begin{verbatim}
323 The defined Client resources are:
324      1: rufus-fd
325 Item 1 selected automatically.
326 Connecting to Client rufus-fd at rufus:8102
327 rufus-fd Version: 1.30 (28 April 2003)
328 Daemon started 28-Apr-2003 14:03, 0 Jobs run.
329 Director connected at: 28-Apr-2003 14:14
330 No jobs running.
331 ====
332 \end{verbatim}
333 \normalsize
334
335 In this case, the client is named {\bf rufus-fd} your name will be different,
336 but the line beginning with {\bf rufus-fd Version ...} is printed by your File
337 daemon, so we are now sure it is up and running. 
338
339 Finally do the same for your Storage daemon with: 
340
341 \footnotesize
342 \begin{verbatim}
343 status storage
344 \end{verbatim}
345 \normalsize
346
347 and you should get: 
348
349 \footnotesize
350 \begin{verbatim}
351 The defined Storage resources are:
352      1: File
353 Item 1 selected automatically.
354 Connecting to Storage daemon File at rufus:8103
355 rufus-sd Version: 1.30 (28 April 2003)
356 Daemon started 28-Apr-2003 14:03, 0 Jobs run.
357 Device /tmp is not open.
358 No jobs running.
359 ====
360 \end{verbatim}
361 \normalsize
362
363 You will notice that the default Storage daemon device is named {\bf File} and
364 that it will use device {\bf /tmp}, which is not currently open. 
365
366 Now, let's actually run a job with: 
367
368 \footnotesize
369 \begin{verbatim}
370 run
371 \end{verbatim}
372 \normalsize
373
374 you should get the following output: 
375
376 \footnotesize
377 \begin{verbatim}
378 Using default Catalog name=MyCatalog DB=bacula
379 A job name must be specified.
380 The defined Job resources are:
381      1: Client1
382      2: BackupCatalog
383      3: RestoreFiles
384 Select Job resource (1-3):
385 \end{verbatim}
386 \normalsize
387
388 Here, Bacula has listed the three different Jobs that you can run, and you
389 should choose number {\bf 1} and type enter, at which point you will get: 
390
391 \footnotesize
392 \begin{verbatim}
393 Run Backup job
394 JobName:  Client1
395 FileSet:  Full Set
396 Level:    Incremental
397 Client:   rufus-fd
398 Storage:  File
399 Pool:     Default
400 When:     2003-04-28 14:18:57
401 OK to run? (yes/mod/no):
402 \end{verbatim}
403 \normalsize
404
405 At this point, take some time to look carefully at what is printed and
406 understand it. It is asking you if it is OK to run a job named {\bf Client1}
407 with FileSet {\bf Full Set} (we listed above) as an Incremental job on your
408 Client (your client name will be different), and to use Storage {\bf File} and
409 Pool {\bf Default}, and finally, it wants to run it now (the current time
410 should be displayed by your console). 
411
412 Here we have the choice to run ({\bf yes}), to modify one or more of the above
413 parameters ({\bf mod}), or to not run the job ({\bf no}). Please enter {\bf
414 yes}, at which point you should immediately get the command prompt (an
415 asterisk). If you wait a few seconds, then enter the command {\bf messages}
416 you will get back something like: 
417
418 \footnotesize
419 \begin{verbatim}
420 28-Apr-2003 14:22 rufus-dir: Last FULL backup time not found. Doing
421                   FULL backup.
422 28-Apr-2003 14:22 rufus-dir: Start Backup JobId 1,
423                   Job=Client1.2003-04-28_14.22.33
424 28-Apr-2003 14:22 rufus-sd: Job Client1.2003-04-28_14.22.33 waiting.
425                   Cannot find any appendable volumes.
426 Please use the "label"  command to create a new Volume for:
427     Storage:      FileStorage
428     Media type:   File
429     Pool:         Default
430 \end{verbatim}
431 \normalsize
432
433 The first message, indicates that no previous Full backup was done, so Bacula
434 is upgrading our Incremental job to a Full backup (this is normal). The second
435 message indicates that the job started with JobId 1., and the third message
436 tells us that Bacula cannot find any Volumes in the Pool for writing the
437 output. This is normal because we have not yet created (labeled) any Volumes.
438 Bacula indicates to you all the details of the volume it needs. 
439
440 At this point, the job is BLOCKED waiting for a Volume. You can check this if
441 you want by doing a {\bf status dir}. In order to continue, we must create a
442 Volume that Bacula can write on. We do so with: 
443
444 \footnotesize
445 \begin{verbatim}
446 label
447 \end{verbatim}
448 \normalsize
449
450 and Bacula will print: 
451
452 \footnotesize
453 \begin{verbatim}
454 The defined Storage resources are:
455      1: File
456 Item 1 selected automatically.
457 Enter new Volume name:
458 \end{verbatim}
459 \normalsize
460
461 at which point, you should enter some name beginning with a letter and
462 containing only letters and numbers (period, hyphen, and underscore) are also
463 permitted. For example, enter {\bf TestVolume001}, and you should get back: 
464
465 \footnotesize
466 \begin{verbatim}
467 Defined Pools:
468      1: Default
469 Item 1 selected automatically.
470 Connecting to Storage daemon File at rufus:8103 ...
471 Sending label command for Volume "TestVolume001" Slot 0 ...
472 3000 OK label. Volume=TestVolume001 Device=/tmp
473 Catalog record for Volume "TestVolume002", Slot 0  successfully created.
474 Requesting mount FileStorage ...
475 3001 OK mount. Device=/tmp
476 \end{verbatim}
477 \normalsize
478
479 Finally, enter {\bf messages} and you should get something like: 
480
481 \footnotesize
482 \begin{verbatim}
483 28-Apr-2003 14:30 rufus-sd: Wrote label to prelabeled Volume
484    "TestVolume001" on device /tmp
485 28-Apr-2003 14:30 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:30
486 JobId:                  1
487 Job:                    Client1.2003-04-28_14.22.33
488 FileSet:                Full Set
489 Backup Level:           Full
490 Client:                 rufus-fd
491 Start time:             28-Apr-2003 14:22
492 End time:               28-Apr-2003 14:30
493 Files Written:          1,444
494 Bytes Written:          38,988,877
495 Rate:                   81.2 KB/s
496 Software Compression:   None
497 Volume names(s):        TestVolume001
498 Volume Session Id:      1
499 Volume Session Time:    1051531381
500 Last Volume Bytes:      39,072,359
501 FD termination status:  OK
502 SD termination status:  OK
503 Termination:            Backup OK
504 28-Apr-2003 14:30 rufus-dir: Begin pruning Jobs.
505 28-Apr-2003 14:30 rufus-dir: No Jobs found to prune.
506 28-Apr-2003 14:30 rufus-dir: Begin pruning Files.
507 28-Apr-2003 14:30 rufus-dir: No Files found to prune.
508 28-Apr-2003 14:30 rufus-dir: End auto prune.
509 \end{verbatim}
510 \normalsize
511
512 If you don't see the output immediately, you can keep entering {\bf messages}
513 until the job terminates, or you can enter, {\bf autodisplay on} and your
514 messages will automatically be displayed as soon as they are ready. 
515
516 If you do an {\bf ls -l} of your {\bf /tmp} directory, you will see that you
517 have the following item: 
518
519 \footnotesize
520 \begin{verbatim}
521 -rw-r-----    1 kern     kern     39072153 Apr 28 14:30 TestVolume001
522 \end{verbatim}
523 \normalsize
524
525 This is the file Volume that you just wrote and it contains all the data of
526 the job just run. If you run additional jobs, they will be appended to this
527 Volume unless you specify otherwise. 
528
529 You might ask yourself if you have to label all the Volumes that Bacula is
530 going to use. The answer for disk Volumes, like the one we used, is no. It is
531 possible to have Bacula automatically label volumes. For tape Volumes, you
532 will most likely have to label each of the Volumes you want to use. 
533
534 If you would like to stop here, you can simply enter {\bf quit} in the Console
535 program, and you can stop Bacula with {\bf ./bacula stop}. To clean up, simply
536 delete the file {\bf /tmp/TestVolume001}, and you should also re-initialize
537 your database using: 
538
539 \footnotesize
540 \begin{verbatim}
541 ./drop_bacula_tables
542 ./make_bacula_tables
543 \end{verbatim}
544 \normalsize
545
546 Please note that this will erase all information about the previous jobs that
547 have run, and that you might want to do it now while testing but that normally
548 you will not want to re-initialize your database. 
549
550 If you would like to try restoring the files that you just backed up, read the
551 following section. 
552 \label{restoring}
553
554 \subsection*{Restoring Your Files}
555 \index[general]{Files!Restoring Your }
556 \index[general]{Restoring Your Files }
557 \addcontentsline{toc}{subsection}{Restoring Your Files}
558
559 If you have run the default configuration and the save of the Bacula source
560 code as demonstrated above, you can restore the backed up files in the Console
561 program by entering: 
562
563 \footnotesize
564 \begin{verbatim}
565 restore all
566 \end{verbatim}
567 \normalsize
568
569 where you will get: 
570
571 \footnotesize
572 \begin{verbatim}
573 First you select one or more JobIds that contain files
574 to be restored. You will be presented several methods
575 of specifying the JobIds. Then you will be allowed to
576 select which files from those JobIds are to be restored.
577
578 To select the JobIds, you have the following choices:
579      1: List last 20 Jobs run
580      2: List Jobs where a given File is saved
581      3: Enter list of comma separated JobIds to select
582      4: Enter SQL list command
583      5: Select the most recent backup for a client
584      6: Select backup for a client before a specified time
585      7: Enter a list of files to restore
586      8: Enter a list of files to restore before a specified time
587      9: Find the JobIds of the most recent backup for a client
588     10: Find the JobIds for a backup for a client before a specified time
589     11: Enter a list of directories to restore for found JobIds
590     12: Cancel
591 Select item:  (1-12): 
592 \end{verbatim}
593 \normalsize
594
595 As you can see, there are a number of options, but for the current
596 demonstration, please enter {\bf 5} to do a restore of the last backup you
597 did, and you will get the following output: 
598
599 \footnotesize
600 \begin{verbatim}
601 Defined Clients:
602      1: rufus-fd
603 Item 1 selected automatically.
604 The defined FileSet resources are:
605      1: 1  Full Set  2003-04-28 14:22:33
606 Item 1 selected automatically.
607 +-------+-------+----------+---------------------+---------------+
608 | JobId | Level | JobFiles | StartTime           | VolumeName    |
609 +-------+-------+----------+---------------------+---------------+
610 | 1     | F     | 1444     | 2003-04-28 14:22:33 | TestVolume002 |
611 +-------+-------+----------+---------------------+---------------+
612 You have selected the following JobId: 1
613 Building directory tree for JobId 1 ...
614 1 Job inserted into the tree and marked for extraction.
615 The defined Storage resources are:
616      1: File
617 Item 1 selected automatically.
618 You are now entering file selection mode where you add and
619 remove files to be restored. All files are initially added.
620 Enter "done" to leave this mode.
621 cwd is: /
622 $
623 \end{verbatim}
624 \normalsize
625
626 where I have truncated the listing on the right side to make it more readable.
627 As you can see by starting at the top of the listing, Bacula knows what client
628 you have, and since there was only one, it selected it automatically, likewise
629 for the FileSet. Then Bacula produced a listing containing all the jobs that
630 form the current backup, in this case, there is only one, and the Storage
631 daemon was also automatically chosen. Bacula then took all the files that were
632 in Job number 1 and entered them into a {\bf directory tree} (a sort of in
633 memory representation of your filesystem). At this point, you can use the {\bf
634 cd} and {\bf ls} ro {\bf dir} commands to walk up and down the directory tree
635 and view what files will be restored. For example, if I enter {\bf cd
636 /home/kern/bacula/bacula-1.30} and then enter {\bf dir} I will get a listing
637 of all the files in the Bacula source directory. On your system, the path will
638 be somewhat different. For more information on this, please refer to the 
639 \ilink{Restore Command Chapter}{_ChapterStart13} of this manual for
640 more details. 
641
642 To exit this mode, simply enter: 
643
644 \footnotesize
645 \begin{verbatim}
646 done
647 \end{verbatim}
648 \normalsize
649
650 and you will get the following output: 
651
652 \footnotesize
653 \begin{verbatim}
654 Bootstrap records written to
655    /home/kern/bacula/testbin/working/restore.bsr
656 The restore job will require the following Volumes:
657    
658    TestVolume001
659 1444 files selected to restore.
660 Run Restore job
661 JobName:    RestoreFiles
662 Bootstrap:  /home/kern/bacula/testbin/working/restore.bsr
663 Where:      /tmp/bacula-restores
664 Replace:    always
665 FileSet:    Full Set
666 Client:     rufus-fd
667 Storage:    File
668 JobId:      *None*
669 When:       2005-04-28 14:53:54
670 OK to run? (yes/mod/no):
671 \end{verbatim}
672 \normalsize
673
674 If you answer {\bf yes} your files will be restored to {\bf
675 /tmp/bacula-restores}. If you want to restore the files to their original
676 locations, you must use the {\bf mod} option and explicitly set {\bf Where:}
677 to nothing (or to /). We recommend you go ahead and answer {\bf yes} and after
678 a brief moment, enter {\bf messages}, at which point you should get a listing
679 of all the files that were restored as well as a summary of the job that looks
680 similar to this: 
681
682 \footnotesize
683 \begin{verbatim}
684 28-Apr-2005 14:56 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:56
685 JobId:                  2
686 Job:                    RestoreFiles.2005-04-28_14.56.06
687 Client:                 rufus-fd
688 Start time:             28-Apr-2005 14:56
689 End time:               28-Apr-2005 14:56
690 Files Restored:         1,444
691 Bytes Restored:         38,816,381
692 Rate:                   9704.1 KB/s
693 FD termination status:  OK
694 Termination:            Restore OK
695 28-Apr-2005 14:56 rufus-dir: Begin pruning Jobs.
696 28-Apr-2005 14:56 rufus-dir: No Jobs found to prune.
697 28-Apr-2005 14:56 rufus-dir: Begin pruning Files.
698 28-Apr-2005 14:56 rufus-dir: No Files found to prune.
699 28-Apr-2005 14:56 rufus-dir: End auto prune.
700 \end{verbatim}
701 \normalsize
702
703 After exiting the Console program, you can examine the files in {\bf
704 /tmp/bacula-restores}, which will contain a small directory tree with all the
705 files. Be sure to clean up at the end with: 
706
707 \footnotesize
708 \begin{verbatim}
709 rm -rf /tmp/bacula-restore
710 \end{verbatim}
711 \normalsize
712
713 \subsection*{Quitting the Console Program}
714 \index[general]{Program!Quitting the Console }
715 \index[general]{Quitting the Console Program }
716 \addcontentsline{toc}{subsection}{Quitting the Console Program}
717
718 Simply enter the command {\bf quit}. 
719 \label{SecondClient}
720
721 \subsection*{Adding a Second Client}
722 \index[general]{Client!Adding a Second }
723 \index[general]{Adding a Second Client }
724 \addcontentsline{toc}{subsection}{Adding a Second Client}
725
726 If you have gotten the example shown above to work on your system, you may be
727 ready to add a second Client (File daemon). That is you have a second machine
728 that you would like backed up. The only part you need installed on the other
729 machine is the binary {\bf bacula-fd} (or {\bf bacula-fd.exe} for Windows) and
730 its configuration file {\bf bacula-fd.conf}. You can start with the same {\bf
731 bacula-fd.conf} file that you are currently using and make one minor
732 modification to it to create the conf file for your second client. Change the
733 File daemon name from whatever was configured, {\bf rufus-fd} in the example
734 above, but your system will have a different name. The best is to change it to
735 the name of your second machine. For example: 
736
737 \footnotesize
738 \begin{verbatim}
739 ...
740 #
741 # "Global" File daemon configuration specifications
742 #
743 FileDaemon {                          # this is me
744   Name = rufus-fd
745   FDport = 9102                  # where we listen for the director
746   WorkingDirectory = /home/kern/bacula/working
747   Pid Directory = /var/run
748 }
749 ...
750 \end{verbatim}
751 \normalsize
752
753 would become: 
754
755 \footnotesize
756 \begin{verbatim}
757 ...
758 #
759 # "Global" File daemon configuration specifications
760 #
761 FileDaemon {                          # this is me
762   Name = matou-fd
763   FDport = 9102                  # where we listen for the director
764   WorkingDirectory = /home/kern/bacula/working
765   Pid Directory = /var/run
766 }
767 ...
768 \end{verbatim}
769 \normalsize
770
771 where I show just a portion of the file and have changed {\bf rufus-fd} to
772 {\bf matou-fd}. The names you use are your choice. For the moment, I recommend
773 you change nothing else. Later, you will want to change the password. 
774
775 Now you should install that change on your second machine. Then you need to
776 make some additions to your Director's configuration file to define the new
777 File daemon or Client. Starting from our original example which should be
778 installed on your system, you should add the following lines (essentially
779 copies of the existing data but with the names changed) to your Director's
780 configuration file {\bf bacula-dir.conf}. 
781
782 \footnotesize
783 \begin{verbatim}
784 #
785 # Define the main nightly save backup job
786 #   By default, this job will back up to disk in /tmp
787 Job {
788   Name = "Matou"
789   Type = Backup
790   Client = matou-fd
791   FileSet = "Full Set"
792   Schedule = "WeeklyCycle"
793   Storage = File
794   Messages = Standard
795   Pool = Default
796   Write Bootstrap = "/home/kern/bacula/working/matou.bsr"
797 }
798 # Client (File Services) to backup
799 Client {
800   Name = matou-fd
801   Address = matou
802   FDPort = 9102
803   Catalog = MyCatalog
804   Password = "xxxxx"                  # password for
805   File Retention = 30d                # 30 days
806   Job Retention = 180d                # six months
807   AutoPrune = yes                     # Prune expired Jobs/Files
808 }
809 \end{verbatim}
810 \normalsize
811
812 Then make sure that the Address parameter in the Storage resource is set to
813 the fully qualified domain name and not to something like "localhost". The
814 address specified is sent to the File daemon (client) and it must be a fully
815 qualified domain name. If you pass something like "localhost" it will not
816 resolve correctly and will result in a time out when the File daemon fails to
817 connect to the Storage daemon. 
818
819 That is all that is necessary. I copied the existing resource to create a
820 second Job (Matou) to backup the second client (matou-fd). It has the name
821 {\bf Matou}, the Client is named {\bf matou-fd}, and the bootstrap file name
822 is changed, but everything else is the same. This means that Matou will be
823 backed up on the same schedule using the same set of tapes. You may want to
824 change that later, but for now, let's keep it simple. 
825
826 The second change was to add a new Client resource that defines {\bf matou-fd}
827 and has the correct address {\bf matou}, but in real life, you may need a
828 fully qualified domain name or an IP address. I also kept the password the
829 same (shown as xxxxx for the example). 
830
831 At this point, if you stop Bacula and restart it, and start the Client on the
832 other machine, everything will be ready, and the prompts that you saw above
833 will now include the second machine. 
834
835 To make this a real production installation, you will possibly want to use
836 different Pool, or a different schedule. It is up to you to customize. In any
837 case, you should change the password in both the Director's file and the
838 Client's file for additional security. 
839
840 For some important tips on changing names and passwords, and a diagram of what
841 names and passwords must match, please see 
842 \ilink{Authorization Errors}{AuthorizationErrors} in the FAQ chapter
843 of this manual. 
844
845 \subsection*{When The Tape Fills}
846 \label{FullTape}
847 \index[general]{Fills!When The Tape }
848 \index[general]{When The Tape Fills }
849 \addcontentsline{toc}{subsection}{When The Tape Fills}
850
851 If you have scheduled your job, typically nightly, there will come a time when
852 the tape fills up and {\bf Bacula} cannot continue. In this case, Bacula will
853 send you a message similar to the following: 
854
855 \footnotesize
856 \begin{verbatim}
857 rufus-sd: block.c:337 === Write error errno=28: ERR=No space left
858           on device
859 \end{verbatim}
860 \normalsize
861
862 This indicates that Bacula got a write error because the tape is full. Bacula
863 will then search the Pool specified for your Job looking for an appendable
864 volume. In the best of all cases, you will have properly set your Retention
865 Periods and you will have all your tapes marked to be Recycled, and {\bf
866 Bacula} will automatically recycle the tapes in your pool requesting and
867 overwriting old Volumes. For more information on recycling, please see the 
868 \ilink{Recycling chapter}{_ChapterStart22} of this manual. If you
869 find that your Volumes were not properly recycled (usually because of a
870 configuration error), please see the 
871 \ilink{Manually Recycling Volumes}{manualrecycling} section of
872 the Recycling chapter. 
873
874 If like me, you have a very large set of Volumes and you label them with the
875 date the Volume was first writing, or you have not set up your Retention
876 periods, Bacula will not find a tape in the pool, and it will send you a
877 message similar to the following: 
878
879 \footnotesize
880 \begin{verbatim}
881 rufus-sd: Job kernsave.2002-09-19.10:50:48 waiting. Cannot find any
882           appendable volumes.
883 Please use the "label"  command to create a new Volume for:
884     Storage:      SDT-10000
885     Media type:   DDS-4
886     Pool:         Default
887 \end{verbatim}
888 \normalsize
889
890 Until you create a new Volume, this message will be repeated an hour later,
891 then two hours later, and so on doubling the interval each time up to a
892 maximum interval of 1 day. 
893
894 The obvious question at this point is: What do I do now? 
895
896 The answer is simple: first, using the Console program, close the tape drive
897 using the {\bf unmount} command. If you only have a single drive, it will be
898 automatically selected, otherwise, make sure you release the one specified on
899 the message (in this case {\bf STD-10000}). 
900
901 Next, you remove the tape from the drive and insert a new blank tape. Note, on
902 some older tape drives, you may need to write an end of file mark ({\bf mt \
903 -f \ /dev/nst0 \ weof}) to prevent the drive from running away when Bacula
904 attempts to read the label. 
905
906 Finally, you use the {\bf label} command in the Console to write a label to
907 the new Volume. The {\bf label} command will contact the Storage daemon to
908 write the software label, if it is successful, it will add the new Volume to
909 the Pool, then issue a {\bf mount} command to the Storage daemon. See the
910 previous sections of this chapter for more details on labeling tapes. 
911
912 The result is that Bacula will continue the previous Job writing the backup to
913 the new Volume. 
914
915 If you have a Pool of volumes and Bacula is cycling through them, instead of
916 the above message "Cannot find any appendable volumes.", Bacula may ask you
917 to mount a specific volume. In that case, you should attempt to do just that.
918 If you do not have the volume any more (for any of a number of reasons), you
919 can simply mount another volume from the same Pool, providing it is
920 appendable, and Bacula will use it. You can use the {\bf list volumes} command
921 in the console program to determine which volumes are appendable and which are
922 not. 
923
924 If like me, you have your Volume retention periods set correctly, but you have
925 no more free Volumes, you can relabel and reuse a Volume as follows: 
926
927 \begin{itemize}
928 \item Do a {\bf list volumes} in the Console and select the oldest  Volume for
929    relabeling.  
930 \item If you have setup your Retention periods correctly, the  Volume should
931    have VolStatus {\bf Purged}.  
932 \item If the VolStatus is not set to Purged, you will need to purge  the
933    database of Jobs that are written on that Volume. Do so  by using the command
934    {\bf purge jobs volume} in the Console.  If you have multiple Pools, you will
935 be prompted for the  Pool then enter the VolumeName (or MediaId) when
936 requested.  
937 \item Then simply use the {\bf relabel} command to relabel the  Volume. 
938    \end{itemize}
939
940 To manually relabel the Volume use the following additional steps: 
941
942 \begin{itemize}
943 \item To delete the Volume from the catalog use the {\bf delete volume} 
944    command in the Console and select the VolumeName (or MediaId) to be  deleted. 
945
946 \item Use the {\bf unmount} command in the Console to unmount the  old tape.  
947 \item Physically relabel the old Volume that you deleted so that it  can be
948    reused.  
949 \item Insert the old Volume in the tape drive.  
950 \item From a command line do: {\bf mt \ -f \ /dev/st0 \ rewind} and  {\bf mt \
951    -f \ /dev/st0 \ weof}, where you need to use the proper  tape drive name for
952    your system in place of {\bf /dev/st0}.  
953 \item Use the {\bf label} command in the Console to write a new  Bacula label
954    on your tape.  
955 \item Use the {\bf mount} command in the Console if it is not automatically 
956    done, so that Bacula starts using your newly labeled tape. 
957    \end{itemize}
958
959 \subsection*{Other Useful Console Commands}
960 \index[general]{Commands!Other Useful Console }
961 \index[general]{Other Useful Console Commands }
962 \addcontentsline{toc}{subsection}{Other Useful Console Commands}
963
964 \begin{description}
965
966 \item [status dir]
967    \index[console]{status dir }
968    Print a status of all running jobs and jobs  scheduled in the next 24 hours.  
969
970 \item [status]
971    \index[console]{status }
972    The console program will prompt you to select  a daemon type, then will
973 request the daemon's status.  
974
975 \item [status jobid=nn]
976    \index[console]{status jobid }
977    Print a status of JobId nn if it is running.  The Storage daemon is contacted
978 and requested to print a current  status of the job as well.  
979
980 \item [list pools]
981    \index[console]{list pools }
982    List the pools defined in the Catalog (normally  only Default is used).  
983
984 \item [list media]
985    \index[console]{list media }
986    Lists all the media defined in the Catalog.  
987
988 \item [list jobs]
989    \index[console]{list jobs }
990    Lists all jobs in the Catalog that have run.  
991
992 \item [list jobid=nn]
993    \index[console]{list jobid }
994    Lists JobId nn from the Catalog.  
995
996 \item [list jobtotals]
997    \index[console]{list jobtotals }
998    Lists totals for all jobs in the Catalog.  
999
1000 \item [list files jobid=nn]
1001    \index[console]{list files jobid }
1002    List the files that were saved for JobId nn.  
1003
1004 \item [list jobmedia]
1005    \index[console]{list jobmedia }
1006    List the media information for each Job run.  
1007
1008 \item [messages]
1009    \index[console]{messages }
1010    Prints any messages that have been directed to the console.  
1011
1012 \item [unmount storage=storage-name]
1013    \index[console]{unmount storage }
1014    Unmounts the drive associated with the storage  device with the name {\bf
1015 storage-name} if the drive is not currently being  used. This command is used
1016 if you wish Bacula to free the drive so  that you can use it to label a tape. 
1017
1018
1019 \item [mount storage=storage-name]
1020    \index[sd]{mount storage }
1021    Causes the drive associated with the  storage device to be mounted again. When
1022 Bacula reaches the end of a volume and requests you to mount a  new volume,
1023 you must issue this command after you have placed the  new volume in the
1024 drive. In effect, it is the signal needed by  Bacula to know to start reading
1025 or writing the new volume.  
1026
1027 \item [quit]
1028    \index[sd]{quit }
1029    Exit or quit the console program. 
1030 \end{description}
1031
1032 Most of the commands given above, with the exception of {\bf list}, will
1033 prompt you for the necessary arguments if you simply enter the command name. 
1034
1035 \subsection*{Debug Daemon Output}
1036 \index[general]{Debug Daemon Output }
1037 \index[general]{Output!Debug Daemon }
1038 \addcontentsline{toc}{subsection}{Debug Daemon Output}
1039
1040 If you want debug output from the daemons as they are running, start the
1041 daemons from the install directory as follows: 
1042
1043 \footnotesize
1044 \begin{verbatim}
1045 ./bacula start -d100
1046 \end{verbatim}
1047 \normalsize
1048
1049 This can be particularly helpful if your daemons do not start correctly,
1050 because direct daemon output to the console is normally directed to the
1051 NULL device, but with the debug level greater than zero, the output
1052 will be sent to the starting terminal.
1053
1054 To stop the three daemons, enter the following from the install directory: 
1055
1056 \footnotesize
1057 \begin{verbatim}
1058 ./bacula stop
1059 \end{verbatim}
1060 \normalsize
1061
1062 The execution of {\bf bacula stop} may complain about pids not found. This is
1063 OK, especially if one of the daemons has died, which is very rare. 
1064
1065 To do a full system save, each File daemon must be running as root so that it
1066 will have permission to access all the files. None of the other daemons
1067 require root privileges. However, the Storage daemon must be able to open the
1068 tape drives. On many systems, only root can access the tape drives. Either run
1069 the Storage daemon as root, or change the permissions on the tape devices to
1070 permit non-root access. MySQL and PostgreSQL can be installed and run with any
1071 userid; root privilege is not necessary. 
1072
1073 \subsection*{Have Patience When Starting the Daemons or Mounting Blank Tapes}
1074 \index[general]{Have Patience When Starting the Daemons or Mounting Blank
1075 Tapes }
1076 \index[general]{Tapes!Have Patience When Starting the Daemons or Mounting
1077 Blank }
1078 \addcontentsline{toc}{subsection}{Have Patience When Starting the Daemons or
1079 Mounting Blank Tapes}
1080
1081 When you start the Bacula daemons, the Storage daemon attempts to open all
1082 defined storage devices and verify the currently mounted Volume (if
1083 configured). Until all the storage devices are verified, the Storage daemon
1084 will not accept connections from the Console program. If a tape was previously
1085 used, it will be rewound, and on some devices this can take several minutes.
1086 As a consequence, you may need to have a bit of patience when first contacting
1087 the Storage daemon after starting the daemons. If you can see your tape drive,
1088 once the lights stop flashing, the drive will be ready to be used. 
1089
1090 The same considerations apply if you have just mounted a blank tape in a drive
1091 such as an HP DLT. It can take a minute or two before the drive properly
1092 recognizes that the tape is blank. If you attempt to {\bf mount} the tape with
1093 the Console program during this recognition period, it is quite possible that
1094 you will hang your SCSI driver (at least on my RedHat Linux system). As a
1095 consequence, you are again urged to have patience when inserting blank tapes.
1096 Let the device settle down before attempting to access it. 
1097
1098 \subsection*{Difficulties Connecting from the FD to the SD}
1099 \index[general]{Difficulties Connecting from the FD to the SD }
1100 \index[general]{SD!Difficulties Connecting from the FD to the }
1101 \addcontentsline{toc}{subsection}{Difficulties Connecting from the FD to the
1102 SD}
1103
1104 If you are having difficulties getting one or more of your File daemons to
1105 connect to the Storage daemon, it is most likely because you have not used a
1106 fully qualified domain name on the {\bf Address} directive in the
1107 Director's Storage resource. That is the resolver on the File daemon's machine
1108 (not on the Director's) must be able to resolve the name you supply into an IP
1109 address. An example of an address that is guaranteed not to work: {\bf
1110 localhost}. An example that may work: {\bf megalon}. An example that is more
1111 likely to work: {\bf magalon.mydomain.com}. On Win32 if you don't have a good
1112 resolver (often true on older Win98 systems), you might try using an IP
1113 address in place of a name. 
1114
1115 If your address is correct, then make sure that no other program is using the
1116 port 9103 on the Storage daemon's machine. The Bacula port number are
1117 authorized by IANA, and should not be used by other programs, but apparently
1118 some HP printers do use these port numbers. A {\bf netstat -a} on the Storage
1119 daemon's machine can determine who is using the 9103 port (used for FD to SD
1120 communications in Bacula). 
1121
1122 \subsection*{Daemon Command Line Options}
1123 \index[general]{Daemon Command Line Options }
1124 \index[general]{Options!Daemon Command Line }
1125 \addcontentsline{toc}{subsection}{Daemon Command Line Options}
1126
1127 Each of the three daemons (Director, File, Storage) accepts a small set of
1128 options on the command line. In general, each of the daemons as well as the
1129 Console program accepts the following options: 
1130
1131 \begin{description}
1132
1133 \item [-c \lt{}file\gt{}]
1134    \index[sd]{-c \lt{}file\gt{} }
1135    Define the file to use as a  configuration file. The default is the daemon
1136 name followed  by {\bf .conf} i.e. {\bf bacula-dir.conf} for the Director, 
1137 {\bf bacula-fd.conf} for the File daemon, and {\bf bacula-sd}  for the Storage
1138 daemon.  
1139
1140 \item [-d nn]
1141    \index[sd]{-d nn }
1142    Set the debug level to {\bf nn}. Higher levels  of debug cause more
1143 information to be displayed on STDOUT concerning  what the daemon is doing.  
1144
1145 \item [-f]
1146    Run the daemon in the foreground. This option is  needed to run the daemon
1147    under the debugger.  
1148
1149 \item [-s]
1150    Do not trap signals. This option is needed to run  the daemon under the
1151    debugger.  
1152
1153 \item [-t]
1154    Read the configuration file and print any error messages,  then immediately
1155    exit. Useful for syntax testing of  new configuration files.  
1156
1157 \item [-v]
1158    Be more verbose or more complete in printing error  and informational
1159    messages. Recommended.  
1160
1161 \item [-?]
1162    Print the version and list of options. 
1163    \end{description}
1164
1165 The Director has the following additional Director specific option: 
1166
1167 \begin{description}
1168
1169 \item [-r \lt{}job\gt{}]
1170    \index[fd]{-r \lt{}job\gt{} }
1171    Run the named job immediately. This is  for debugging and should not be used. 
1172 \end{description}
1173
1174 The File daemon has the following File daemon specific option: 
1175
1176 \begin{description}
1177
1178 \item [-i]
1179    Assume that the daemon is called from {\bf inetd}  or {\bf xinetd}. In this
1180    case, the daemon assumes that a connection  has already been made and that it
1181 is passed as STDIN. After the  connection terminates the daemon will exit. 
1182 \end{description}
1183
1184 The Storage daemon has no Storage daemon specific options. 
1185
1186 The Console program has no console specific options. 
1187
1188 \subsection*{Creating a Pool}
1189 \label{Pool}
1190 \index[general]{Pool!Creating a }
1191 \index[general]{Creating a Pool }
1192 \addcontentsline{toc}{subsection}{Creating a Pool}
1193
1194 Creating the Pool is automatically done when {\bf Bacula} starts, so if you
1195 understand Pools, you can skip to the next section. 
1196
1197 When you run a job, one of the things that Bacula must know is what Volumes to
1198 use to backup the FileSet. Instead of specifying a Volume (tape) directly, you
1199 specify which Pool of Volumes you want Bacula to consult when it wants a tape
1200 for writing backups. Bacula will select the first available Volume from the
1201 Pool that is appropriate for the Storage device you have specified for the Job
1202 being run. When a volume has filled up with data, {\bf Bacula} will change its
1203 VolStatus from {\bf Append} to {\bf Full}, and then {\bf Bacula} will use the
1204 next volume and so on. If no appendable Volume exists in the Pool, the
1205 Director will attempt to recycle an old Volume, if there are still no
1206 appendable Volumes available, {\bf Bacula} will send a message requesting the
1207 operator to create an appropriate Volume. 
1208
1209 {\bf Bacula} keeps track of the Pool name, the volumes contained in the Pool,
1210 and a number of attributes of each of those Volumes. 
1211
1212 When Bacula starts, it ensures that all Pool resource definitions have been
1213 recorded in the catalog. You can verify this by entering: 
1214
1215 \footnotesize
1216 \begin{verbatim}
1217 list pools
1218 \end{verbatim}
1219 \normalsize
1220
1221 to the console program, which should print something like the following: 
1222
1223 \footnotesize
1224 \begin{verbatim}
1225 *list pools
1226 Using default Catalog name=MySQL DB=bacula
1227 +--------+---------+---------+---------+----------+-------------+
1228 | PoolId | Name    | NumVols | MaxVols | PoolType | LabelFormat |
1229 +--------+---------+---------+---------+----------+-------------+
1230 | 1      | Default | 3       | 0       | Backup   | *           |
1231 | 2      | File    | 12      | 12      | Backup   | File        |
1232 +--------+---------+---------+---------+----------+-------------+
1233 *
1234 \end{verbatim}
1235 \normalsize
1236
1237 If you attempt to create the same Pool name a second time, {\bf Bacula} will
1238 print: 
1239
1240 \footnotesize
1241 \begin{verbatim}
1242 Error: Pool Default already exists.
1243 Once created, you may use the {\bf update} command to
1244 modify many of the values in the Pool record.
1245 \end{verbatim}
1246 \normalsize
1247
1248 \label{Labeling}
1249
1250 \subsection*{Labeling Your Volumes}
1251 \index[general]{Volumes!Labeling Your }
1252 \index[general]{Labeling Your Volumes }
1253 \addcontentsline{toc}{subsection}{Labeling Your Volumes}
1254
1255 Bacula requires that each Volume contains a software label. There are several
1256 strategies for labeling volumes. The one I use is to label them as they are
1257 needed by {\bf Bacula} using the console program. That is when Bacula needs a
1258 new Volume, and it does not find one in the catalog, it will send me an email
1259 message requesting that I add Volumes to the Pool. I then use the {\bf label}
1260 command in the Console program to label a new Volume and to define it in the
1261 Pool database, after which Bacula will begin writing on the new Volume.
1262 Alternatively, I can use the Console {\bf relabel} command to relabel a Volume
1263 that is no longer used providing it has VolStatus {\bf Purged}. 
1264
1265 Another strategy is to label a set of volumes at the start, then use them as
1266 {\bf Bacula} requests them. This is most often done if you are cycling through
1267 a set of tapes, for example using an autochanger. For more details on
1268 recycling, please see the 
1269 \ilink{Automatic Volume Recycling}{_ChapterStart22} chapter of
1270 this manual. 
1271
1272 If you run a Bacula job, and you have no labeled tapes in the Pool, Bacula
1273 will inform you, and you can create them "on-the-fly" so to speak. In my
1274 case, I label my tapes with the date, for example: {\bf DLT-18April02}. See
1275 below for the details of using the {\bf label} command. 
1276
1277 \subsection*{Labeling Volumes with the Console Program}
1278 \index[general]{Labeling Volumes with the Console Program }
1279 \index[general]{Program!Labeling Volumes with the Console }
1280 \addcontentsline{toc}{subsection}{Labeling Volumes with the Console Program}
1281
1282 Labeling volumes is normally done by using the console program. 
1283
1284 \begin{enumerate}
1285 \item ./bconsole  
1286 \item label 
1287    \end{enumerate}
1288
1289 If Bacula complains that you cannot label the tape because it is already
1290 labeled, simply {\bf unmount} the tape using the {\bf unmount} command in the
1291 console, then physically mount a blank tape and re-issue the {\bf label}
1292 command. 
1293
1294 Since the physical storage media is different for each device, the {\bf label}
1295 command will provide you with a list of the defined Storage resources such as
1296 the following: 
1297
1298 \footnotesize
1299 \begin{verbatim}
1300 The defined Storage resources are:
1301      1: File
1302      2: 8mmDrive
1303      3: DLTDrive
1304      4: SDT-10000
1305 Select Storage resource (1-4):
1306 \end{verbatim}
1307 \normalsize
1308
1309 At this point, you should have a blank tape in the drive corresponding to the
1310 Storage resource that you select. 
1311
1312 It will then ask you for the Volume name. 
1313
1314 \footnotesize
1315 \begin{verbatim}
1316 Enter new Volume name:
1317 \end{verbatim}
1318 \normalsize
1319
1320 If Bacula complains: 
1321
1322 \footnotesize
1323 \begin{verbatim}
1324 Media record for Volume xxxx already exists.
1325 \end{verbatim}
1326 \normalsize
1327
1328 It means that the volume name {\bf xxxx} that you entered already exists in
1329 the Media database. You can list all the defined Media (Volumes) with the {\bf
1330 list media} command. Note, the LastWritten column has been truncated for
1331 proper printing. 
1332
1333 \footnotesize
1334 \begin{verbatim}
1335 +---------------+---------+--------+----------------+-----/~/-+------------+-----+
1336 | VolumeName    | MediaTyp| VolStat| VolBytes       | LastWri | VolReten   | Recy|
1337 +---------------+---------+--------+----------------+---------+------------+-----+
1338 | DLTVol0002    | DLT8000 | Purged | 56,128,042,217 | 2001-10 | 31,536,000 |   0 |
1339 | DLT-07Oct2001 | DLT8000 | Full   | 56,172,030,586 | 2001-11 | 31,536,000 |   0 |
1340 | DLT-08Nov2001 | DLT8000 | Full   | 55,691,684,216 | 2001-12 | 31,536,000 |   0 |
1341 | DLT-01Dec2001 | DLT8000 | Full   | 55,162,215,866 | 2001-12 | 31,536,000 |   0 |
1342 | DLT-28Dec2001 | DLT8000 | Full   | 57,888,007,042 | 2002-01 | 31,536,000 |   0 |
1343 | DLT-20Jan2002 | DLT8000 | Full   | 57,003,507,308 | 2002-02 | 31,536,000 |   0 |
1344 | DLT-16Feb2002 | DLT8000 | Full   | 55,772,630,824 | 2002-03 | 31,536,000 |   0 |
1345 | DLT-12Mar2002 | DLT8000 | Full   | 50,666,320,453 | 1970-01 | 31,536,000 |   0 |
1346 | DLT-27Mar2002 | DLT8000 | Full   | 57,592,952,309 | 2002-04 | 31,536,000 |   0 |
1347 | DLT-15Apr2002 | DLT8000 | Full   | 57,190,864,185 | 2002-05 | 31,536,000 |   0 |
1348 | DLT-04May2002 | DLT8000 | Full   | 60,486,677,724 | 2002-05 | 31,536,000 |   0 |
1349 | DLT-26May02   | DLT8000 | Append |  1,336,699,620 | 2002-05 | 31,536,000 |   1 |
1350 +---------------+---------+--------+----------------+-----/~/-+------------+-----+
1351 \end{verbatim}
1352 \normalsize
1353
1354 Once Bacula has verified that the volume does not already exist, it will
1355 prompt you for the name of the Pool in which the Volume (tape) is to be
1356 created.  If there is only one Pool (Default), it will be automatically
1357 selected.
1358
1359 If the tape is successfully labeled, a Volume record will also be created in
1360 the Pool. That is the Volume name and all its other attributes will appear
1361 when you list the Pool. In addition, that Volume will be available for backup
1362 if the MediaType matches what is requested by the Storage daemon. 
1363
1364 When you labeled the tape, you answered very few questions about it --
1365 principally the Volume name, and perhaps the Slot. However, a Volume record in
1366 the catalog database (internally known as a Media record) contains quite a few
1367 attributes. Most of these attributes will be filled in from the default values
1368 that were defined in the Pool (i.e. the Pool holds most of the default
1369 attributes used when creating a Volume). 
1370
1371 It is also possible to add media to the pool without physically labeling the
1372 Volumes. This can be done with the {\bf add} command. For more information,
1373 please see the 
1374 \ilink{Console Chapter}{_ConsoleChapter} of this manual.