4 \chapter{Customizing the Configuration Files}
5 \label{ConfigureChapter}
6 \index[general]{Files!Customizing the Configuration }
7 \index[general]{Customizing the Configuration Files }
9 When each of the Bacula programs starts, it reads a configuration file
10 specified on the command line or the default {\bf bacula-dir.conf}, {\bf
11 bacula-fd.conf}, {\bf bacula-sd.conf}, or {\bf console.conf} for the Director
12 daemon, the File daemon, the Storage daemon, and the Console program
15 Each service (Director, Client, Storage, Console) has its own configuration
16 file containing a set of Resource definitions. These resources are very
17 similar from one service to another, but may contain different directives
18 (records) depending on the service. For example, in the Director's resource
19 file, the {\bf Director} resource defines the name of the Director, a number
20 of global Director parameters and his password. In the File daemon
21 configuration file, the {\bf Director} resource specifies which Directors are
22 permitted to use the File daemon.
24 Before running Bacula for the first time, you must customize the configuration
25 files for each daemon. Default configuration files will have been created by
26 the installation process, but you will need to modify them to correspond to
27 your system. An overall view of the resources can be seen in the following:
29 %% \addcontentsline{lof}{figure}{Bacula Objects}
30 %% \includegraphics{\idir bacula-objects}
31 \bsysimageH{bacula-objects}{Bacula Objects}{figconfig:baculaobjects}
34 \section{Character Sets}
35 \index[general]{Character Sets}
36 Bacula is designed to handle most character sets of the world,
37 US ASCII, German, French, Chinese, ... However, it does this by
38 encoding everything in UTF-8, and it expects all configuration files
39 (including those read on Win32 machines) to be in UTF-8 format.
40 UTF-8 is typically the default on Linux machines, but not on all
41 Unix machines, nor on Windows, so you must take some care to ensure
42 that your locale is set properly before starting Bacula.
44 To ensure that Bacula configuration files can be correctly read including
45 foreign characters the {bf LANG} environment variable
46 must end in {\bf .UTF-8}. An full example is {\bf en\_US.UTF-8}. The
47 exact syntax may vary a bit from OS to OS, and exactly how you define
48 it will also vary. On most newer Win32 machines, you can use {\bf notepad}
49 to edit the conf files, then choose output encoding UTF-8.
51 Bacula assumes that all filenames are in UTF-8 format on Linux and
52 Unix machines. On Win32 they are in Unicode (UTF-16), and will
53 be automatically converted to UTF-8 format.
55 \section{Resource Directive Format}
56 \index[general]{Resource Directive Format }
57 \index[general]{Format!Resource Directive }
59 Although, you won't need to know the details of all the directives a basic
60 knowledge of Bacula resource directives is essential. Each directive contained
61 within the resource (within the braces) is composed of a keyword followed by
62 an equal sign (=) followed by one or more values. The keywords must be one of
63 the known Bacula resource record keywords, and it may be composed of upper or
64 lower case characters and spaces.
66 Each resource definition MUST contain a Name directive, and may optionally
67 contain a Description directive. The Name directive is used to
68 uniquely identify the resource. The Description directive is (will be) used
69 during display of the Resource to provide easier human recognition. For
76 Description = "Main Bacula Director"
77 WorkingDirectory = "$HOME/bacula/bin/working"
82 Defines the Director resource with the name "MyDir" and a working directory
83 \$HOME/bacula/bin/working. In general, if you want spaces in a name to the
84 right of the first equal sign (=), you must enclose that name within double
85 quotes. Otherwise quotes are not generally necessary because once defined,
86 quoted strings and unquoted strings are all equal.
90 \index[general]{Comments}
92 When reading the configuration file, blank lines are ignored and everything
93 after a hash sign (\#) until the end of the line is taken to be a comment. A
94 semicolon (;) is a logical end of line, and anything after the semicolon is
95 considered as the next statement. If a statement appears on a line by itself,
96 a semicolon is not necessary to terminate it, so generally in the examples in
97 this manual, you will not see many semicolons.
100 \subsection{Upper and Lower Case and Spaces}
101 \index[general]{Spaces!Upper/Lower Case}
102 \index[general]{Upper and Lower Case and Spaces}
104 Case (upper/lower) and spaces are totally ignored in the resource directive
105 keywords (the part before the equal sign).
107 Within the keyword (i.e. before the equal sign), spaces are not significant.
108 Thus the keywords: {\bf name}, {\bf Name}, and {\bf N a m e} are all
111 Spaces after the equal sign and before the first character of the value are
114 In general, spaces within a value are significant (not ignored), and if the
115 value is a name, you must enclose the name in double quotes for the spaces to
116 be accepted. Names may contain up to 127 characters. Currently, a name may
117 contain any ASCII character. Within a quoted string, any character following a
118 backslash (\textbackslash{}) is taken as itself (handy for inserting
119 backslashes and double quotes (")).
121 Please note, however, that Bacula resource names as well as certain other
122 names (e.g. Volume names) must contain only letters (including ISO accented
123 letters), numbers, and a few special characters (space, underscore, ...).
124 All other characters and punctuation are invalid.
127 \subsection{Including other Configuration Files}
128 \index[general]{Including other Configuration Files }
129 \index[general]{Files!Including other Configuration }
130 \index[general]{Using @ to include other files}
131 \index[general]{@{\bf filename}}
133 If you wish to break your configuration file into smaller pieces, you can do
134 so by including other files using the syntax @{\bf filename} where {\bf
135 filename} is the full path and filename of another file. The @filename
136 specification can be given anywhere a primitive token would appear.
138 If you wish include all files in a specific directory, you can use the following:
140 # Include subfiles associated with configuration of clients.
141 # They define the bulk of the Clients, Jobs, and FileSets.
142 # Remember to "reload" the Director after adding a client file.
144 @|"sh -c 'for f in /etc/bacula/clientdefs/*.conf ; do echo @${f} ; done'"
148 \subsection{Recognized Primitive Data Types}
149 \index[general]{Types!Recognized Primitive Data }
150 \index[general]{Recognized Primitive Data Types }
152 When parsing the resource directives, Bacula classifies the data according to
153 the types listed below. The first time you read this, it may appear a bit
154 overwhelming, but in reality, it is all pretty logical and straightforward.
160 A keyword or name consisting of alphanumeric characters, including the
161 hyphen, underscore, and dollar characters. The first character of a {\bf
162 name} must be a letter. A name has a maximum length currently set to 127
163 bytes. Typically keywords appear on the left side of an equal (i.e. they are
164 Bacula keywords -- i.e. Resource names or directive names). Keywords may not
168 \index[fd]{name-string}
169 A name-string is similar to a name, except that the name may be quoted and
170 can thus contain additional characters including spaces. Name strings are
171 limited to 127 characters in length. Name strings are typically used on the
172 right side of an equal (i.e. they are values to be associated with a keyword).
177 A quoted string containing virtually any character including spaces, or a
178 non-quoted string. A string may be of any length. Strings are typically
179 values that correspond to filenames, directories, or system command names. A
180 backslash (\textbackslash{}) turns the next character into itself, so to
181 include a double quote in a string, you precede the double quote with a
182 backslash. Likewise to include a backslash.
185 \index[dir]{directory}
186 A directory is either a quoted or non-quoted string. A directory will be
187 passed to your standard shell for expansion when it is scanned. Thus
188 constructs such as {\bf \$HOME} are interpreted to be their correct values.
191 \index[dir]{password}
192 This is a Bacula password and it is stored internally in MD5 hashed format.
196 A 32 bit integer value. It may be positive or negative.
198 \item [positive integer]
199 \index[dir]{positive integer }
200 A 32 bit positive integer value.
203 \index[dir]{long integer}
204 A 64 bit integer value. Typically these are values such as bytes that can
205 exceed 4 billion and thus require a 64 bit value.
208 \index[dir]{yes or no }
209 Either a {\bf yes} or a {\bf no}.
214 A size specified as bytes. Typically, this is a floating point scientific
215 input format followed by an optional modifier. The floating point input is
216 stored as a 64 bit integer value. If a modifier is present, it must
217 immediately follow the value with no intervening spaces. The following
218 modifiers are permitted:
228 1,048,576 (megabytes)
231 1,000,000 (megabytes)
234 1,073,741,824 (gigabytes)
237 1,000,000,000 (gigabytes)
243 A time or duration specified in seconds. The time is stored internally as
244 a 64 bit integer value, but it is specified in two parts: a number part and
245 a modifier part. The number can be an integer or a floating point number.
246 If it is entered in floating point notation, it will be rounded to the
247 nearest integer. The modifier is mandatory and follows the number part,
248 either with or without intervening spaces. The following modifiers are
267 days (3600*24 seconds)
271 weeks (3600*24*7 seconds)
275 months (3600*24*30 seconds)
278 \index[dir]{quarters }
279 quarters (3600*24*91 seconds)
283 years (3600*24*365 seconds)
286 Any abbreviation of these modifiers is also permitted (i.e. {\bf seconds}
287 may be specified as {\bf sec} or {\bf s}). A specification of {\bf m} will
290 The specification of a time may have as many number/modifier parts as you
295 1 week 2 days 3 hours 10 mins
296 1 month 2 days 30 sec
301 are valid date specifications.
306 \section{Resource Types}
307 \index[general]{Types!Resource }
308 \index[general]{Resource Types }
310 The following table lists all current Bacula resource types. It shows what
311 resources must be defined for each service (daemon). The default configuration
312 files will already contain at least one example of each permitted resource, so
313 you need not worry about creating all these kinds of resources from scratch.
315 %\addcontentsline{lot}{table}{Resource Types}
316 \LTXtable{0.95\linewidth}{table_resources}
317 \section{Names, Passwords and Authorization}
319 \index[general]{Authorization!Names Passwords and }
320 \index[general]{Names, Passwords and Authorization }
321 \index[general]{Passwords}
323 In order for one daemon to contact another daemon, it must authorize itself
324 with a password. In most cases, the password corresponds to a particular name,
325 so both the name and the password must match to be authorized. Passwords are
326 plain text, any text. They are not generated by any special process; just
329 The default configuration files are automatically defined for correct
330 authorization with random passwords. If you add to or modify these files, you
331 will need to take care to keep them consistent.
333 Here is sort of a picture of what names/passwords in which files/Resources
336 %\includegraphics{\idir Conf-Diagram}
337 \bsysimageH{Conf-Diagram}{Configuration diagram}{figconfig:configdiagram}
339 In the left column, you will find the Director, Storage, and Client resources,
340 with their names and passwords -- these are all in {\bf bacula-dir.conf}. In
341 the right column are where the corresponding values should be found in the
342 Console, Storage daemon (SD), and File daemon (FD) configuration files.
344 Please note that the Address, {\bf fd-sd}, that appears in the Storage
345 resource of the Director, preceded with and asterisk in the above example, is
346 passed to the File daemon in symbolic form. The File daemon then resolves it
347 to an IP address. For this reason, you must use either an IP address or a
348 fully qualified name. A name such as {\bf localhost}, not being a fully
349 qualified name, will resolve in the File daemon to the localhost of the File
350 daemon, which is most likely not what is desired. The password used for the
351 File daemon to authorize with the Storage daemon is a temporary password
352 unique to each Job created by the daemons and is not specified in any .conf
355 \section{Detailed Information for each Daemon}
356 \index[general]{Detailed Information for each Daemon }
357 \index[general]{Daemon!Detailed Information for each }
359 The details of each Resource and the directives permitted therein are
360 described in the following chapters.
362 The following configuration files must be defined:
366 \ilink{Console}{ConsoleConfChapter} -- to define the resources for
367 the Console program (user interface to the Director). It defines which
368 Directors are available so that you may interact with them.
370 \ilink{Director}{DirectorChapter} -- to define the resources
371 necessary for the Director. You define all the Clients and Storage daemons
372 that you use in this configuration file.
374 \ilink{Client}{FiledConfChapter} -- to define the resources for
375 each client to be backed up. That is, you will have a separate Client
376 resource file on each machine that runs a File daemon.
378 \ilink{Storage}{StoredConfChapter} -- to define the resources to
379 be used by each Storage daemon. Normally, you will have a single Storage
380 daemon that controls your tape drive or tape drives. However, if you have
381 tape drives on several machines, you will have at least one Storage daemon