4 \section*{A Brief Tutorial}
6 \index[general]{Brief Tutorial }
7 \index[general]{Tutorial!Brief }
8 \addcontentsline{toc}{section}{Brief Tutorial}
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.
22 The general flow of running Bacula is:
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
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
36 \item Add a second client.
39 Each of these steps is described in more detail below.
41 \subsection*{Before Running Bacula}
42 \index[general]{Bacula!Before Running }
43 \index[general]{Before Running Bacula }
44 \addcontentsline{toc}{subsection}{Before Running Bacula}
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.
58 \subsection*{Starting the Database}
60 \index[general]{Starting the Database }
61 \index[general]{Database!Starting the }
62 \addcontentsline{toc}{subsection}{Starting the Database}
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.
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}.
76 \subsection*{Starting the Daemons}
78 \index[general]{Starting the Daemons }
79 \index[general]{Daemons!Starting the }
80 \addcontentsline{toc}{subsection}{Starting the Daemons}
82 Assuming you have built from source or have installed the rpms,
83 to start the three daemons, from your installation directory, simply enter:
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
94 Some distributions may do this differently.
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
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
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
114 and then restart as noted above.
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.
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
127 To communicate with the director and to query the state of Bacula or run jobs,
128 from the top level directory, simply enter:
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:
138 Another possibilty is to run the wxWidgets program {\bf wx-console}.
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}
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:
152 [kern@polymatou bin]$ ./bconsole
153 Connecting to Director lpmatou:9101
154 1000 OK: HeadMan Version: 1.30 (28 April 2003)
159 the asterisk is the console command prompt.
161 Type {\bf help} to see a list of available commands:
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
176 help print this command
178 list list [pools | jobs | jobtotals | media <pool> |
179 files jobid=<nn>]; from catalog
180 llist full or long list like list command
182 mount mount <storage-name>
183 prune prune expired records from catalog
184 purge purge records from catalog
187 relabel relabel a tape
188 release release <storage-name>
189 restore restore files
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
199 var does variable expansion
200 version print Director version
201 wait wait until no jobs are running
206 Details of the console program's commands are explained in the
207 \ilink{Console Chapter}{_ConsoleChapter} of this manual.
209 \subsection*{Running a Job}
211 \index[general]{Job!Running a }
212 \index[general]{Running a Job }
213 \addcontentsline{toc}{subsection}{Running a Job}
215 At this point, we assume you have done the following:
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}
233 Furthermore, we assume for the moment you are using the default configuration
236 At this point, enter the following command:
244 and you should get something similar to:
248 FileSet: name=Full Set
249 Inc: /home/kern/bacula/bacula-1.30
254 FileSet: name=Catalog
255 Inc: /home/kern/bacula/testbin/working/bacula.sql
259 This is a pre-defined {\bf FileSet} that will backup the Bacula source
260 directory. The actual directory names printed should correspond to your system
261 configuration. For testing purposes, we have chosen a directory of moderate
262 size (about 40 Megabytes) and complexity without being too big. The FileSet
263 {\bf Catalog} is used for backing up Bacula's catalog and is not of interest
264 to us for the moment. The {\bf Inc:} entries are the files or directories that
265 will be included in the backup and the {\bf Exc:} are those that will be
266 excluded. You can change what is backed up by editing {\bf bacula-dir.conf}
267 and changing the {\bf File =} line in the {\bf FileSet} resource.
269 Now is the time to run your first backup job. We are going to backup your
270 Bacula source directory to a File Volume in your {\bf /tmp} directory just to
271 show you how easy it is. Now enter:
279 and you should get the following output:
283 rufus-dir Version: 1.30 (28 April 2003)
284 Daemon started 28-Apr-2003 14:03, 0 Jobs run.
285 Console connected at 28-Apr-2003 14:03
287 Level Type Scheduled Name
288 =================================================================
289 Incremental Backup 29-Apr-2003 01:05 Client1
290 Full Backup 29-Apr-2003 01:10 BackupCatalog
295 where the times and the Director's name will be different according to your
296 setup. This shows that an Incremental job is scheduled to run for the Job {\bf
297 Client1} at 1:05am and that at 1:10, a {\bf BackupCatalog} is scheduled to
298 run. Note, you should probably change the name {\bf Client1} to be the name of
299 your machine, if not, when you add additional clients, it will be very
300 confusing. For my real machine, I use {\bf Rufus} rather than {\bf Client1} as
311 and you should get something like:
315 The defined Client resources are:
317 Item 1 selected automatically.
318 Connecting to Client rufus-fd at rufus:8102
319 rufus-fd Version: 1.30 (28 April 2003)
320 Daemon started 28-Apr-2003 14:03, 0 Jobs run.
321 Director connected at: 28-Apr-2003 14:14
327 In this case, the client is named {\bf rufus-fd} your name will be different,
328 but the line beginning with {\bf rufus-fd Version ...} is printed by your File
329 daemon, so we are now sure it is up and running.
331 Finally do the same for your Storage daemon with:
343 The defined Storage resources are:
345 Item 1 selected automatically.
346 Connecting to Storage daemon File at rufus:8103
347 rufus-sd Version: 1.30 (28 April 2003)
348 Daemon started 28-Apr-2003 14:03, 0 Jobs run.
349 Device /tmp is not open.
355 You will notice that the default Storage daemon device is named {\bf File} and
356 that it will use device {\bf /tmp}, which is not currently open.
358 Now, let's actually run a job with:
366 you should get the following output:
370 Using default Catalog name=MyCatalog DB=bacula
371 A job name must be specified.
372 The defined Job resources are:
376 Select Job resource (1-3):
380 Here, Bacula has listed the three different Jobs that you can run, and you
381 should choose number {\bf 1} and type enter, at which point you will get:
392 When: 2003-04-28 14:18:57
393 OK to run? (yes/mod/no):
397 At this point, take some time to look carefully at what is printed and
398 understand it. It is asking you if it is OK to run a job named {\bf Client1}
399 with FileSet {\bf Full Set} (we listed above) as an Incremental job on your
400 Client (your client name will be different), and to use Storage {\bf File} and
401 Pool {\bf Default}, and finally, it wants to run it now (the current time
402 should be displayed by your console).
404 Here we have the choice to run ({\bf yes}), to modify one or more of the above
405 parameters ({\bf mod}), or to not run the job ({\bf no}). Please enter {\bf
406 yes}, at which point you should immediately get the command prompt (an
407 asterisk). If you wait a few seconds, then enter the command {\bf messages}
408 you will get back something like:
412 28-Apr-2003 14:22 rufus-dir: Last FULL backup time not found. Doing
414 28-Apr-2003 14:22 rufus-dir: Start Backup JobId 1,
415 Job=Client1.2003-04-28_14.22.33
416 28-Apr-2003 14:22 rufus-sd: Job Client1.2003-04-28_14.22.33 waiting.
417 Cannot find any appendable volumes.
418 Please use the "label" command to create a new Volume for:
425 The first message, indicates that no previous Full backup was done, so Bacula
426 is upgrading our Incremental job to a Full backup (this is normal). The second
427 message indicates that the job started with JobId 1., and the third message
428 tells us that Bacula cannot find any Volumes in the Pool for writing the
429 output. This is normal because we have not yet created (labeled) any Volumes.
430 Bacula indicates to you all the details of the volume it needs.
432 At this point, the job is BLOCKED waiting for a Volume. You can check this if
433 you want by doing a {\bf status dir}. In order to continue, we must create a
434 Volume that Bacula can write on. We do so with:
442 and Bacula will print:
446 The defined Storage resources are:
448 Item 1 selected automatically.
449 Enter new Volume name:
453 at which point, you should enter some name beginning with a letter and
454 containing only letters and numbers (period, hyphen, and underscore) are also
455 permitted. For example, enter {\bf TestVolume001}, and you should get back:
461 Item 1 selected automatically.
462 Connecting to Storage daemon File at rufus:8103 ...
463 Sending label command for Volume "TestVolume001" Slot 0 ...
464 3000 OK label. Volume=TestVolume001 Device=/tmp
465 Catalog record for Volume "TestVolume002", Slot 0 successfully created.
466 Requesting mount FileStorage ...
467 3001 OK mount. Device=/tmp
471 Finally, enter {\bf messages} and you should get something like:
475 28-Apr-2003 14:30 rufus-sd: Wrote label to prelabeled Volume
476 "TestVolume001" on device /tmp
477 28-Apr-2003 14:30 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:30
479 Job: Client1.2003-04-28_14.22.33
483 Start time: 28-Apr-2003 14:22
484 End time: 28-Apr-2003 14:30
486 Bytes Written: 38,988,877
488 Software Compression: None
489 Volume names(s): TestVolume001
491 Volume Session Time: 1051531381
492 Last Volume Bytes: 39,072,359
493 FD termination status: OK
494 SD termination status: OK
495 Termination: Backup OK
496 28-Apr-2003 14:30 rufus-dir: Begin pruning Jobs.
497 28-Apr-2003 14:30 rufus-dir: No Jobs found to prune.
498 28-Apr-2003 14:30 rufus-dir: Begin pruning Files.
499 28-Apr-2003 14:30 rufus-dir: No Files found to prune.
500 28-Apr-2003 14:30 rufus-dir: End auto prune.
504 If you don't see the output immediately, you can keep entering {\bf messages}
505 until the job terminates, or you can enter, {\bf autodisplay on} and your
506 messages will automatically be displayed as soon as they are ready.
508 If you do an {\bf ls -l} of your {\bf /tmp} directory, you will see that you
509 have the following item:
513 -rw-r----- 1 kern kern 39072153 Apr 28 14:30 TestVolume001
517 This is the file Volume that you just wrote and it contains all the data of
518 the job just run. If you run additional jobs, they will be appended to this
519 Volume unless you specify otherwise.
521 You might ask yourself if you have to label all the Volumes that Bacula is
522 going to use. The answer for disk Volumes, like the one we used, is no. It is
523 possible to have Bacula automatically label volumes. For tape Volumes, you
524 will most likely have to label each of the Volumes you want to use.
526 If you would like to stop here, you can simply enter {\bf quit} in the Console
527 program, and you can stop Bacula with {\bf ./bacula stop}. To clean up, simply
528 delete the file {\bf /tmp/TestVolume001}, and you should also re-initialize
538 Please note that this will erase all information about the previous jobs that
539 have run, and that you might want to do it now while testing but that normally
540 you will not want to re-initialize your database.
542 If you would like to try restoring the files that you just backed up, read the
546 \subsection*{Restoring Your Files}
547 \index[general]{Files!Restoring Your }
548 \index[general]{Restoring Your Files }
549 \addcontentsline{toc}{subsection}{Restoring Your Files}
551 If you have run the default configuration and the save of the Bacula source
552 code as demonstrated above, you can restore the backed up files in the Console
565 First you select one or more JobIds that contain files
566 to be restored. You will be presented several methods
567 of specifying the JobIds. Then you will be allowed to
568 select which files from those JobIds are to be restored.
570 To select the JobIds, you have the following choices:
571 1: List last 20 Jobs run
572 2: List Jobs where a given File is saved
573 3: Enter list of comma separated JobIds to select
574 4: Enter SQL list command
575 5: Select the most recent backup for a client
576 6: Select backup for a client before a specified time
577 7: Enter a list of files to restore
578 8: Enter a list of files to restore before a specified time
579 9: Find the JobIds of the most recent backup for a client
580 10: Find the JobIds for a backup for a client before a specified time
581 11: Enter a list of directories to restore for found JobIds
587 As you can see, there are a number of options, but for the current
588 demonstration, please enter {\bf 5} to do a restore of the last backup you
589 did, and you will get the following output:
595 Item 1 selected automatically.
596 The defined FileSet resources are:
597 1: 1 Full Set 2003-04-28 14:22:33
598 Item 1 selected automatically.
599 +-------+-------+----------+---------------------+---------------+
600 | JobId | Level | JobFiles | StartTime | VolumeName |
601 +-------+-------+----------+---------------------+---------------+
602 | 1 | F | 1444 | 2003-04-28 14:22:33 | TestVolume002 |
603 +-------+-------+----------+---------------------+---------------+
604 You have selected the following JobId: 1
605 Building directory tree for JobId 1 ...
606 1 Job inserted into the tree and marked for extraction.
607 The defined Storage resources are:
609 Item 1 selected automatically.
610 You are now entering file selection mode where you add and
611 remove files to be restored. All files are initially added.
612 Enter "done" to leave this mode.
618 where I have truncated the listing on the right side to make it more readable.
619 As you can see by starting at the top of the listing, Bacula knows what client
620 you have, and since there was only one, it selected it automatically, likewise
621 for the FileSet. Then Bacula produced a listing containing all the jobs that
622 form the current backup, in this case, there is only one, and the Storage
623 daemon was also automatically chosen. Bacula then took all the files that were
624 in Job number 1 and entered them into a {\bf directory tree} (a sort of in
625 memory representation of your filesystem). At this point, you can use the {\bf
626 cd} and {\bf ls} ro {\bf dir} commands to walk up and down the directory tree
627 and view what files will be restored. For example, if I enter {\bf cd
628 /home/kern/bacula/bacula-1.30} and then enter {\bf dir} I will get a listing
629 of all the files in the Bacula source directory. On your system, the path will
630 be somewhat different. For more information on this, please refer to the
631 \ilink{Restore Command Chapter}{_ChapterStart13} of this manual for
634 To exit this mode, simply enter:
642 and you will get the following output:
646 Bootstrap records written to
647 /home/kern/bacula/testbin/working/restore.bsr
648 The restore job will require the following Volumes:
651 1444 files selected to restore.
653 JobName: RestoreFiles
654 Bootstrap: /home/kern/bacula/testbin/working/restore.bsr
655 Where: /tmp/bacula-restores
661 When: 2005-04-28 14:53:54
662 OK to run? (yes/mod/no):
666 If you answer {\bf yes} your files will be restored to {\bf
667 /tmp/bacula-restores}. If you want to restore the files to their original
668 locations, you must use the {\bf mod} option and explicitly set {\bf Where:}
669 to nothing (or to /). We recommend you go ahead and answer {\bf yes} and after
670 a brief moment, enter {\bf messages}, at which point you should get a listing
671 of all the files that were restored as well as a summary of the job that looks
676 28-Apr-2005 14:56 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:56
678 Job: RestoreFiles.2005-04-28_14.56.06
680 Start time: 28-Apr-2005 14:56
681 End time: 28-Apr-2005 14:56
682 Files Restored: 1,444
683 Bytes Restored: 38,816,381
685 FD termination status: OK
686 Termination: Restore OK
687 28-Apr-2005 14:56 rufus-dir: Begin pruning Jobs.
688 28-Apr-2005 14:56 rufus-dir: No Jobs found to prune.
689 28-Apr-2005 14:56 rufus-dir: Begin pruning Files.
690 28-Apr-2005 14:56 rufus-dir: No Files found to prune.
691 28-Apr-2005 14:56 rufus-dir: End auto prune.
695 After exiting the Console program, you can examine the files in {\bf
696 /tmp/bacula-restores}, which will contain a small directory tree with all the
697 files. Be sure to clean up at the end with:
701 rm -rf /tmp/bacula-restore
705 \subsection*{Quitting the Console Program}
706 \index[general]{Program!Quitting the Console }
707 \index[general]{Quitting the Console Program }
708 \addcontentsline{toc}{subsection}{Quitting the Console Program}
710 Simply enter the command {\bf quit}.
713 \subsection*{Adding a Second Client}
714 \index[general]{Client!Adding a Second }
715 \index[general]{Adding a Second Client }
716 \addcontentsline{toc}{subsection}{Adding a Second Client}
718 If you have gotten the example shown above to work on your system, you may be
719 ready to add a second Client (File daemon). That is you have a second machine
720 that you would like backed up. The only part you need installed on the other
721 machine is the binary {\bf bacula-fd} (or {\bf bacula-fd.exe} for Windows) and
722 its configuration file {\bf bacula-fd.conf}. You can start with the same {\bf
723 bacula-fd.conf} file that you are currently using and make one minor
724 modification to it to create the conf file for your second client. Change the
725 File daemon name from whatever was configured, {\bf rufus-fd} in the example
726 above, but your system will have a different name. The best is to change it to
727 the name of your second machine. For example:
733 # "Global" File daemon configuration specifications
735 FileDaemon { # this is me
737 FDport = 9102 # where we listen for the director
738 WorkingDirectory = /home/kern/bacula/working
739 Pid Directory = /var/run
751 # "Global" File daemon configuration specifications
753 FileDaemon { # this is me
755 FDport = 9102 # where we listen for the director
756 WorkingDirectory = /home/kern/bacula/working
757 Pid Directory = /var/run
763 where I show just a portion of the file and have changed {\bf rufus-fd} to
764 {\bf matou-fd}. The names you use are your choice. For the moment, I recommend
765 you change nothing else. Later, you will want to change the password.
767 Now you should install that change on your second machine. Then you need to
768 make some additions to your Director's configuration file to define the new
769 File daemon or Client. Starting from our original example which should be
770 installed on your system, you should add the following lines (essentially
771 copies of the existing data but with the names changed) to your Director's
772 configuration file {\bf bacula-dir.conf}.
777 # Define the main nightly save backup job
778 # By default, this job will back up to disk in /tmp
784 Schedule = "WeeklyCycle"
788 Write Bootstrap = "/home/kern/bacula/working/matou.bsr"
790 # Client (File Services) to backup
796 Password = "xxxxx" # password for
797 File Retention = 30d # 30 days
798 Job Retention = 180d # six months
799 AutoPrune = yes # Prune expired Jobs/Files
804 Then make sure that the Address parameter in the Storage resource is set to
805 the fully qualified domain name and not to something like "localhost". The
806 address specified is sent to the File daemon (client) and it must be a fully
807 qualified domain name. If you pass something like "localhost" it will not
808 resolve correctly and will result in a time out when the File daemon fails to
809 connect to the Storage daemon.
811 That is all that is necessary. I copied the existing resource to create a
812 second Job (Matou) to backup the second client (matou-fd). It has the name
813 {\bf Matou}, the Client is named {\bf matou-fd}, and the bootstrap file name
814 is changed, but everything else is the same. This means that Matou will be
815 backed up on the same schedule using the same set of tapes. You may want to
816 change that later, but for now, let's keep it simple.
818 The second change was to add a new Client resource that defines {\bf matou-fd}
819 and has the correct address {\bf matou}, but in real life, you may need a
820 fully qualified machine address or an IP address. I also kept the password the
821 same (shown as xxxxx for the example).
823 At this point, if you stop Bacula and restart it, and start the Client on the
824 other machine, everything will be ready, and the prompts that you saw above
825 will now include the second machine.
827 To make this a real production installation, you will possibly want to use
828 different Pool, or a different schedule. It is up to you to customize. In any
829 case, you should change the password in both the Director's file and the
830 Client's file for additional security.
832 For some important tips on changing names and passwords, and a diagram of what
833 names and passwords must match, please see
834 \ilink{Authorization Errors}{AuthorizationErrors} in the FAQ chapter
837 \subsection*{When The Tape Fills}
839 \index[general]{Fills!When The Tape }
840 \index[general]{When The Tape Fills }
841 \addcontentsline{toc}{subsection}{When The Tape Fills}
843 If you have scheduled your job, typically nightly, there will come a time when
844 the tape fills up and {\bf Bacula} cannot continue. In this case, Bacula will
845 send you a message similar to the following:
849 rufus-sd: block.c:337 === Write error errno=28: ERR=No space left
854 This indicates that Bacula got a write error because the tape is full. Bacula
855 will then search the Pool specified for your Job looking for an appendable
856 volume. In the best of all cases, you will have properly set your Retention
857 Periods and you will have all your tapes marked to be Recycled, and {\bf
858 Bacula} will automatically recycle the tapes in your pool requesting and
859 overwriting old Volumes. For more information on recycling, please see the
860 \ilink{Recycling chapter}{_ChapterStart22} of this manual. If you
861 find that your Volumes were not properly recycled (usually because of a
862 configuration error), please see the
863 \ilink{Manually Recycling Volumes}{manualrecycling} section of
864 the Recycling chapter.
866 If like me, you have a very large set of Volumes and you label them with the
867 date the Volume was first writing, or you have not set up your Retention
868 periods, Bacula will not find a tape in the pool, and it will send you a
869 message similar to the following:
873 rufus-sd: Job kernsave.2002-09-19.10:50:48 waiting. Cannot find any
875 Please use the "label" command to create a new Volume for:
882 Until you create a new Volume, this message will be repeated an hour later,
883 then two hours later, and so on doubling the interval each time up to a
884 maximum interval of 1 day.
886 The obvious question at this point is: What do I do now?
888 The answer is simple: first, using the Console program, close the tape drive
889 using the {\bf unmount} command. If you only have a single drive, it will be
890 automatically selected, otherwise, make sure you release the one specified on
891 the message (in this case {\bf STD-10000}).
893 Next, you remove the tape from the drive and insert a new blank tape. Note, on
894 some older tape drives, you may need to write an end of file mark ({\bf mt \
895 -f \ /dev/nst0 \ weof}) to prevent the drive from running away when Bacula
896 attempts to read the label.
898 Finally, you use the {\bf label} command in the Console to write a label to
899 the new Volume. The {\bf label} command will contact the Storage daemon to
900 write the software label, if it is successful, it will add the new Volume to
901 the Pool, then issue a {\bf mount} command to the Storage daemon. See the
902 previous sections of this chapter for more details on labeling tapes.
904 The result is that Bacula will continue the previous Job writing the backup to
907 If you have a Pool of volumes and Bacula is cycling through them, instead of
908 the above message "Cannot find any appendable volumes.", Bacula may ask you
909 to mount a specific volume. In that case, you should attempt to do just that.
910 If you do not have the volume any more (for any of a number of reasons), you
911 can simply mount another volume from the same Pool, providing it is
912 appendable, and Bacula will use it. You can use the {\bf list volumes} command
913 in the console program to determine which volumes are appendable and which are
916 If like me, you have your Volume retention periods set correctly, but you have
917 no more free Volumes, you can relabel and reuse a Volume as follows:
920 \item Do a {\bf list volumes} in the Console and select the oldest Volume for
922 \item If you have setup your Retention periods correctly, the Volume should
923 have VolStatus {\bf Purged}.
924 \item If the VolStatus is not set to Purged, you will need to purge the
925 database of Jobs that are written on that Volume. Do so by using the command
926 {\bf purge jobs volume} in the Console. If you have multiple Pools, you will
927 be prompted for the Pool then enter the VolumeName (or MediaId) when
929 \item Then simply use the {\bf relabel} command to relabel the Volume.
932 To manually relabel the Volume use the following additional steps:
935 \item To delete the Volume from the catalog use the {\bf delete volume}
936 command in the Console and select the VolumeName (or MediaId) to be deleted.
938 \item Use the {\bf unmount} command in the Console to unmount the old tape.
939 \item Physically relabel the old Volume that you deleted so that it can be
941 \item Insert the old Volume in the tape drive.
942 \item From a command line do: {\bf mt \ -f \ /dev/st0 \ rewind} and {\bf mt \
943 -f \ /dev/st0 \ weof}, where you need to use the proper tape drive name for
944 your system in place of {\bf /dev/st0}.
945 \item Use the {\bf label} command in the Console to write a new Bacula label
947 \item Use the {\bf mount} command in the Console if it is not automatically
948 done, so that Bacula starts using your newly labeled tape.
951 \subsection*{Other Useful Console Commands}
952 \index[general]{Commands!Other Useful Console }
953 \index[general]{Other Useful Console Commands }
954 \addcontentsline{toc}{subsection}{Other Useful Console Commands}
959 \index[console]{status dir }
960 Print a status of all running jobs and jobs scheduled in the next 24 hours.
963 \index[console]{status }
964 The console program will prompt you to select a daemon type, then will
965 request the daemon's status.
967 \item [status jobid=nn]
968 \index[console]{status jobid }
969 Print a status of JobId nn if it is running. The Storage daemon is contacted
970 and requested to print a current status of the job as well.
973 \index[console]{list pools }
974 List the pools defined in the Catalog (normally only Default is used).
977 \index[console]{list media }
978 Lists all the media defined in the Catalog.
981 \index[console]{list jobs }
982 Lists all jobs in the Catalog that have run.
984 \item [list jobid=nn]
985 \index[console]{list jobid }
986 Lists JobId nn from the Catalog.
988 \item [list jobtotals]
989 \index[console]{list jobtotals }
990 Lists totals for all jobs in the Catalog.
992 \item [list files jobid=nn]
993 \index[console]{list files jobid }
994 List the files that were saved for JobId nn.
996 \item [list jobmedia]
997 \index[console]{list jobmedia }
998 List the media information for each Job run.
1001 \index[console]{messages }
1002 Prints any messages that have been directed to the console.
1004 \item [unmount storage=storage-name]
1005 \index[console]{unmount storage }
1006 Unmounts the drive associated with the storage device with the name {\bf
1007 storage-name} if the drive is not currently being used. This command is used
1008 if you wish Bacula to free the drive so that you can use it to label a tape.
1011 \item [mount storage=storage-name]
1012 \index[sd]{mount storage }
1013 Causes the drive associated with the storage device to be mounted again. When
1014 Bacula reaches the end of a volume and requests you to mount a new volume,
1015 you must issue this command after you have placed the new volume in the
1016 drive. In effect, it is the signal needed by Bacula to know to start reading
1017 or writing the new volume.
1021 Exit or quit the console program.
1024 Most of the commands given above, with the exception of {\bf list}, will
1025 prompt you for the necessary arguments if you simply enter the command name.
1027 \subsection*{Debug Daemon Output}
1028 \index[general]{Debug Daemon Output }
1029 \index[general]{Output!Debug Daemon }
1030 \addcontentsline{toc}{subsection}{Debug Daemon Output}
1032 If you want debug output from the daemons as they are running, start the
1033 daemons from the install directory as follows:
1037 ./bacula start -d100
1041 This can be particularly helpful if your daemons do not start correctly,
1042 because direct daemon output to the console is normally directed to the
1043 NULL device, but with the debug level greater than zero, the output
1044 will be sent to the starting terminal.
1046 To stop the three daemons, enter the following from the install directory:
1054 The execution of {\bf bacula stop} may complain about pids not found. This is
1055 OK, especially if one of the daemons has died, which is very rare.
1057 To do a full system save, each File daemon must be running as root so that it
1058 will have permission to access all the files. None of the other daemons
1059 require root privileges. However, the Storage daemon must be able to open the
1060 tape drives. On many systems, only root can access the tape drives. Either run
1061 the Storage daemon as root, or change the permissions on the tape devices to
1062 permit non-root access. MySQL and PostgreSQL can be installed and run with any
1063 userid; root privilege is not necessary.
1065 \subsection*{Have Patience When Starting the Daemons or Mounting Blank Tapes}
1066 \index[general]{Have Patience When Starting the Daemons or Mounting Blank
1068 \index[general]{Tapes!Have Patience When Starting the Daemons or Mounting
1070 \addcontentsline{toc}{subsection}{Have Patience When Starting the Daemons or
1071 Mounting Blank Tapes}
1073 When you start the Bacula daemons, the Storage daemon attempts to open all
1074 defined storage devices and verify the currently mounted Volume (if
1075 configured). Until all the storage devices are verified, the Storage daemon
1076 will not accept connections from the Console program. If a tape was previously
1077 used, it will be rewound, and on some devices this can take several minutes.
1078 As a consequence, you may need to have a bit of patience when first contacting
1079 the Storage daemon after starting the daemons. If you can see your tape drive,
1080 once the lights stop flashing, the drive will be ready to be used.
1082 The same considerations apply if you have just mounted a blank tape in a drive
1083 such as an HP DLT. It can take a minute or two before the drive properly
1084 recognizes that the tape is blank. If you attempt to {\bf mount} the tape with
1085 the Console program during this recognition period, it is quite possible that
1086 you will hang your SCSI driver (at least on my RedHat Linux system). As a
1087 consequence, you are again urged to have patience when inserting blank tapes.
1088 Let the device settle down before attempting to access it.
1090 \subsection*{Difficulties Connecting from the FD to the SD}
1091 \index[general]{Difficulties Connecting from the FD to the SD }
1092 \index[general]{SD!Difficulties Connecting from the FD to the }
1093 \addcontentsline{toc}{subsection}{Difficulties Connecting from the FD to the
1096 If you are having difficulties getting one or more of your File daemons to
1097 connect to the Storage daemon, it is most likely because you have not used a
1098 fully qualified Internet address on the {\bf Address} directive in the
1099 Director's Storage resource. That is the resolver on the File daemon's machine
1100 (not on the Director's) must be able to resolve the name you supply into an IP
1101 address. An example of an address that is guaranteed not to work: {\bf
1102 localhost}. An example that may work: {\bf megalon}. An example that is more
1103 likely to work: {\bf magalon.mydomain.com}. On Win32 if you don't have a good
1104 resolver (often true on older Win98 systems), you might try using an IP
1105 address in place of a name.
1107 If your address is correct, then make sure that no other program is using the
1108 port 9103 on the Storage daemon's machine. The Bacula port number are
1109 authorized by IANA, and should not be used by other programs, but apparently
1110 some HP printers do use these port numbers. A {\bf netstat -a} on the Storage
1111 daemon's machine can determine who is using the 9103 port (used for FD to SD
1112 communications in Bacula).
1114 \subsection*{Daemon Command Line Options}
1115 \index[general]{Daemon Command Line Options }
1116 \index[general]{Options!Daemon Command Line }
1117 \addcontentsline{toc}{subsection}{Daemon Command Line Options}
1119 Each of the three daemons (Director, File, Storage) accepts a small set of
1120 options on the command line. In general, each of the daemons as well as the
1121 Console program accepts the following options:
1125 \item [-c \lt{}file\gt{}]
1126 \index[sd]{-c \lt{}file\gt{} }
1127 Define the file to use as a configuration file. The default is the daemon
1128 name followed by {\bf .conf} i.e. {\bf bacula-dir.conf} for the Director,
1129 {\bf bacula-fd.conf} for the File daemon, and {\bf bacula-sd} for the Storage
1134 Set the debug level to {\bf nn}. Higher levels of debug cause more
1135 information to be displayed on STDOUT concerning what the daemon is doing.
1138 Run the daemon in the foreground. This option is needed to run the daemon
1142 Do not trap signals. This option is needed to run the daemon under the
1146 Read the configuration file and print any error messages, then immediately
1147 exit. Useful for syntax testing of new configuration files.
1150 Be more verbose or more complete in printing error and informational
1151 messages. Recommended.
1154 Print the version and list of options.
1157 The Director has the following additional Director specific option:
1161 \item [-r \lt{}job\gt{}]
1162 \index[fd]{-r \lt{}job\gt{} }
1163 Run the named job immediately. This is for debugging and should not be used.
1166 The File daemon has the following File daemon specific option:
1171 Assume that the daemon is called from {\bf inetd} or {\bf xinetd}. In this
1172 case, the daemon assumes that a connection has already been made and that it
1173 is passed as STDIN. After the connection terminates the daemon will exit.
1176 The Storage daemon has no Storage daemon specific options.
1178 The Console program has no console specific options.
1180 \subsection*{Creating a Pool}
1182 \index[general]{Pool!Creating a }
1183 \index[general]{Creating a Pool }
1184 \addcontentsline{toc}{subsection}{Creating a Pool}
1186 Creating the Pool is automatically done when {\bf Bacula} starts, so if you
1187 understand Pools, you can skip to the next section.
1189 When you run a job, one of the things that Bacula must know is what Volumes to
1190 use to backup the FileSet. Instead of specifying a Volume (tape) directly, you
1191 specify which Pool of Volumes you want Bacula to consult when it wants a tape
1192 for writing backups. Bacula will select the first available Volume from the
1193 Pool that is appropriate for the Storage device you have specified for the Job
1194 being run. When a volume has filled up with data, {\bf Bacula} will change its
1195 VolStatus from {\bf Append} to {\bf Full}, and then {\bf Bacula} will use the
1196 next volume and so on. If no appendable Volume exists in the Pool, the
1197 Director will attempt to recycle an old Volume, if there are still no
1198 appendable Volumes available, {\bf Bacula} will send a message requesting the
1199 operator to create an appropriate Volume.
1201 {\bf Bacula} keeps track of the Pool name, the volumes contained in the Pool,
1202 and a number of attributes of each of those Volumes.
1204 When Bacula starts, it ensures that all Pool resource definitions have been
1205 recorded in the catalog. You can verify this by entering:
1213 to the console program, which should print something like the following:
1218 Using default Catalog name=MySQL DB=bacula
1219 +--------+---------+---------+---------+----------+-------------+
1220 | PoolId | Name | NumVols | MaxVols | PoolType | LabelFormat |
1221 +--------+---------+---------+---------+----------+-------------+
1222 | 1 | Default | 3 | 0 | Backup | * |
1223 | 2 | File | 12 | 12 | Backup | File |
1224 +--------+---------+---------+---------+----------+-------------+
1229 If you attempt to create the same Pool name a second time, {\bf Bacula} will
1234 Error: Pool Default already exists.
1235 Once created, you may use the {\bf update} command to
1236 modify many of the values in the Pool record.
1242 \subsection*{Labeling Your Volumes}
1243 \index[general]{Volumes!Labeling Your }
1244 \index[general]{Labeling Your Volumes }
1245 \addcontentsline{toc}{subsection}{Labeling Your Volumes}
1247 Bacula requires that each Volume contains a software label. There are several
1248 strategies for labeling volumes. The one I use is to label them as they are
1249 needed by {\bf Bacula} using the console program. That is when Bacula needs a
1250 new Volume, and it does not find one in the catalog, it will send me an email
1251 message requesting that I add Volumes to the Pool. I then use the {\bf label}
1252 command in the Console program to label a new Volume and to define it in the
1253 Pool database, after which Bacula will begin writing on the new Volume.
1254 Alternatively, I can use the Console {\bf relabel} command to relabel a Volume
1255 that is no longer used providing it has VolStatus {\bf Purged}.
1257 Another strategy is to label a set of volumes at the start, then use them as
1258 {\bf Bacula} requests them. This is most often done if you are cycling through
1259 a set of tapes, for example using an autochanger. For more details on
1260 recycling, please see the
1261 \ilink{Automatic Volume Recycling}{_ChapterStart22} chapter of
1264 If you run a Bacula job, and you have no labeled tapes in the Pool, Bacula
1265 will inform you, and you can create them "on-the-fly" so to speak. In my
1266 case, I label my tapes with the date, for example: {\bf DLT-18April02}. See
1267 below for the details of using the {\bf label} command.
1269 \subsection*{Labeling Volumes with the Console Program}
1270 \index[general]{Labeling Volumes with the Console Program }
1271 \index[general]{Program!Labeling Volumes with the Console }
1272 \addcontentsline{toc}{subsection}{Labeling Volumes with the Console Program}
1274 Labeling volumes is normally done by using the console program.
1281 If Bacula complains that you cannot label the tape because it is already
1282 labeled, simply {\bf unmount} the tape using the {\bf unmount} command in the
1283 console, then physically mount a blank tape and re-issue the {\bf label}
1286 Since the physical storage media is different for each device, the {\bf label}
1287 command will provide you with a list of the defined Storage resources such as
1292 The defined Storage resources are:
1297 Select Storage resource (1-4):
1301 At this point, you should have a blank tape in the drive corresponding to the
1302 Storage resource that you select.
1304 It will then ask you for the Volume name.
1308 Enter new Volume name:
1312 If Bacula complains:
1316 Media record for Volume xxxx already exists.
1320 It means that the volume name {\bf xxxx} that you entered already exists in
1321 the Media database. You can list all the defined Media (Volumes) with the {\bf
1322 list media} command. Note, the LastWritten column has been truncated for
1327 +---------------+---------+--------+----------------+-----/~/-+------------+-----+
1328 | VolumeName | MediaTyp| VolStat| VolBytes | LastWri | VolReten | Recy|
1329 +---------------+---------+--------+----------------+---------+------------+-----+
1330 | DLTVol0002 | DLT8000 | Purged | 56,128,042,217 | 2001-10 | 31,536,000 | 0 |
1331 | DLT-07Oct2001 | DLT8000 | Full | 56,172,030,586 | 2001-11 | 31,536,000 | 0 |
1332 | DLT-08Nov2001 | DLT8000 | Full | 55,691,684,216 | 2001-12 | 31,536,000 | 0 |
1333 | DLT-01Dec2001 | DLT8000 | Full | 55,162,215,866 | 2001-12 | 31,536,000 | 0 |
1334 | DLT-28Dec2001 | DLT8000 | Full | 57,888,007,042 | 2002-01 | 31,536,000 | 0 |
1335 | DLT-20Jan2002 | DLT8000 | Full | 57,003,507,308 | 2002-02 | 31,536,000 | 0 |
1336 | DLT-16Feb2002 | DLT8000 | Full | 55,772,630,824 | 2002-03 | 31,536,000 | 0 |
1337 | DLT-12Mar2002 | DLT8000 | Full | 50,666,320,453 | 1970-01 | 31,536,000 | 0 |
1338 | DLT-27Mar2002 | DLT8000 | Full | 57,592,952,309 | 2002-04 | 31,536,000 | 0 |
1339 | DLT-15Apr2002 | DLT8000 | Full | 57,190,864,185 | 2002-05 | 31,536,000 | 0 |
1340 | DLT-04May2002 | DLT8000 | Full | 60,486,677,724 | 2002-05 | 31,536,000 | 0 |
1341 | DLT-26May02 | DLT8000 | Append | 1,336,699,620 | 2002-05 | 31,536,000 | 1 |
1342 +---------------+---------+--------+----------------+-----/~/-+------------+-----+
1346 Once Bacula has verified that the volume does not already exist, it will
1347 prompt you for the name of the Pool in which the Volume (tape) is to be
1348 created. If there is only one Pool (Default), it will be automatically
1351 If the tape is successfully labeled, a Volume record will also be created in
1352 the Pool. That is the Volume name and all its other attributes will appear
1353 when you list the Pool. In addition, that Volume will be available for backup
1354 if the MediaType matches what is requested by the Storage daemon.
1356 When you labeled the tape, you answered very few questions about it --
1357 principally the Volume name, and perhaps the Slot. However, a Volume record in
1358 the catalog database (internally known as a Media record) contains quite a few
1359 attributes. Most of these attributes will be filled in from the default values
1360 that were defined in the Pool (i.e. the Pool holds most of the default
1361 attributes used when creating a Volume).
1363 It is also possible to add media to the pool without physically labeling the
1364 Volumes. This can be done with the {\bf add} command. For more information,
1366 \ilink{Console Chapter}{_ConsoleChapter} of this manual.