]> git.sur5r.net Git - bacula/docs/blobdiff - docs/manuals/en/main/dirdconf.tex
Fix doc typos reported by Silver Salonen
[bacula/docs] / docs / manuals / en / main / dirdconf.tex
index 06b2fc0c583de79b86f1dda1fd1b51db413d0254..0c2a7c6a69fd18897ec875976a41353cf46c4884 100644 (file)
 
 Of all the configuration files needed to run {\bf Bacula}, the Director's is
 the most complicated, and the one that you will need to modify the most often
-as you add clients or modify the FileSets. 
+as you add clients or modify the FileSets.
 
 For a general discussion of configuration files and resources including the
-data types recognized by {\bf Bacula}. Please see the 
-\ilink{Configuration}{ConfigureChapter} chapter of this manual. 
+data types recognized by {\bf Bacula}. Please see the
+\ilink{Configuration}{ConfigureChapter} chapter of this manual.
 
 \section{Director Resource Types}
 \index[general]{Types!Director Resource}
 \index[general]{Director Resource Types}
 
-Director resource type may be one of the following: 
+Director resource type may be one of the following:
 
 Job, JobDefs, Client, Storage, Catalog, Schedule, FileSet, Pool, Director,  or
-Messages. We present them here in the most logical order for defining them: 
+Messages. We present them here in the most logical order for defining them:
 
 Note, everything revolves around a job and is tied to a job in one
 way or another.
 
-\begin{itemize}
-\item 
-   \ilink{Director}{DirectorResource4} -- to  define the Director's
+\begin{bsysitemize}
+\item
+   \ilink{Director}{DirectorResource} -- to  define the Director's
    name and its access password used for authenticating the Console program.
-   Only a single  Director resource definition may appear in the Director's 
+   Only a single  Director resource definition may appear in the Director's
    configuration file.  If you have either {\bf /dev/random} or  {\bf bc} on your
    machine, Bacula will generate a random password during the configuration
-   process, otherwise it will  be left blank. 
-\item 
-   \ilink{Job}{JobResource} -- to define the backup/restore Jobs 
+   process, otherwise it will  be left blank.
+\item
+   \ilink{Job}{JobResource} -- to define the backup/restore Jobs
    and to tie together the Client, FileSet and Schedule resources to  be used
    for each Job. Normally, you will Jobs of different names corresponding
    to each client (i.e. one Job per client, but a different one with a different name
    for each client).
-\item 
-   \ilink{JobDefs}{JobDefsResource} -- optional resource for 
-   providing defaults for Job resources.  
-\item 
-   \ilink{Schedule}{ScheduleResource} -- to define when a Job is to 
-   be automatically run by {\bf Bacula's} internal scheduler. You 
+\item
+   \ilink{JobDefs}{JobDefsResource} -- optional resource for
+   providing defaults for Job resources.
+\item
+   \ilink{Schedule}{ScheduleResource} -- to define when a Job is to
+   be automatically run by {\bf Bacula's} internal scheduler. You
    may have any number of Schedules, but each job will reference only
    one.
-\item 
-   \ilink{FileSet}{FileSetResource} -- to define the set of files 
+\item
+   \ilink{FileSet}{FileSetResource} -- to define the set of files
    to be backed up for each Client. You may have any number of
    FileSets but each Job will reference only one.
-\item 
+\item
    \ilink{Client}{ClientResource2} -- to define what Client is to be
-   backed up. You will generally have multiple Client definitions. Each 
+   backed up. You will generally have multiple Client definitions. Each
    Job will reference only a single client.
-\item 
-   \ilink{Storage}{StorageResource2} -- to define on what physical
+\item
+   \ilink{Storage}{StorageResource} -- to define on what physical
    device the Volumes should be mounted. You may have one or
    more Storage definitions.
-\item 
+\item
    \ilink{Pool}{PoolResource} -- to define the pool of Volumes
    that can be used for a particular Job. Most people use a
    single default Pool.  However, if you have a large number
    of clients or volumes, you may want to have multiple Pools.
    Pools allow you to restrict a Job (or a Client) to use
    only a particular set of Volumes.
-\item 
+\item
    \ilink{Catalog}{CatalogResource} -- to define in what database to
-   keep the list of files and the Volume names where they are backed up.  
+   keep the list of files and the Volume names where they are backed up.
    Most people only use a single catalog.  However, if you want to
    scale the Director to many clients, multiple catalogs can be helpful.
    Multiple catalogs require a bit more management because in general
-   you must know what catalog contains what data.  Currently, all 
+   you must know what catalog contains what data.  Currently, all
    Pools are defined in each catalog.  This restriction will be removed
    in a later release.
-\item 
+\item
    \ilink{Messages}{MessagesChapter} -- to define where error and
    information messages are to be sent or logged. You may define
    multiple different message resources and hence direct particular
-   classes of messages to different users or locations (files, ...).
-\end{itemize}
+   classes of messages to different users or locations (files, \ldots{}).
+\end{bsysitemize}
 
+\label{DirectorResource}
 \section{The Director Resource}
-\label{DirectorResource4}
 \index[general]{Director Resource}
 \index[general]{Resource!Director}
 
 The Director resource defines the attributes of the Directors running on the
 network. In the current implementation, there is only a single Director
 resource, but the final design will contain multiple Directors to maintain
-index and media database redundancy. 
+index and media database redundancy.
 
 \begin{description}
 
 \item [Director]
    \index[dir]{Director}
    Start of the Director resource. One and only one  director resource must be
-supplied.  
+supplied.
 
+\label{Director:Director:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
    The director name used by the system  administrator. This directive is
-required.  
+required.
 
+\label{Director:Director:Description}
 \item [Description = \lt{}text\gt{}]
    \index[dir]{Description}
    \index[dir]{Directive!Description}
    The text field contains a  description of the Director that will be displayed
-in the  graphical user interface. This directive is optional.  
+in the  graphical user interface. This directive is optional.
 
+\label{Director:Director:Password}
 \item [Password = \lt{}UA-password\gt{}]
    \index[dir]{Password}
    \index[dir]{Directive!Password}
@@ -126,22 +129,23 @@ in the  graphical user interface. This directive is optional.
    it.
 
    The password is plain text.  It is not generated through any special
-   process but as noted above, it is better to use random text for 
+   process but as noted above, it is better to use random text for
    security reasons.
 
+   \label{Director:Director:Messages}
 \item [Messages = \lt{}Messages-resource-name\gt{}]
-   \index[dir]{Messages}
    \index[dir]{Directive!Messages}
    The messages resource  specifies where to deliver Director messages that are
    not associated  with a specific Job. Most messages are specific to a job and
-   will  be directed to the Messages resource specified by the job. However, 
+   will  be directed to the Messages resource specified by the job. However,
    there are a few messages that can occur when no job is running.  This
-   directive is required.  
+   directive is required.
 
+   \label{Director:Director:WorkingDirectory}
 \item [Working Directory = \lt{}Directory\gt{}]
    \index[dir]{Working Directory}
    \index[dir]{Directive!Working Directory}
-   This directive  is mandatory and specifies a directory in which the Director 
+   This directive  is mandatory and specifies a directory in which the Director
    may put its status files. This directory should be used only  by Bacula but
    may be shared by other Bacula daemons. However, please note, if this
    directory is shared with other Bacula daemons (the File daemon and Storage
@@ -149,33 +153,35 @@ in the  graphical user interface. This directive is optional.
    unique so that the temporary filenames used do not collide.  By default
    the Bacula configure process creates unique daemon names by postfixing them
    with -dir, -fd, and -sd. Standard shell expansion of the {\bf
-   Directory}  is done when the configuration file is read so that values such 
+   Directory}  is done when the configuration file is read so that values such
    as {\bf \$HOME} will be properly expanded. This directive is required.
    The working directory specified must already exist and be
    readable and writable by the Bacula daemon referencing it.
 
    If you have specified a Director user and/or a Director group on your
-   ./configure line with {\bf {-}{-}with-dir-user} and/or 
+   ./configure line with {\bf {-}{-}with-dir-user} and/or
    {\bf {-}{-}with-dir-group} the Working Directory owner and group will
    be set to those values.
 
+   \label{Director:Director:PidDirectory}
 \item [Pid Directory = \lt{}Directory\gt{}]
    \index[dir]{Pid Directory}
    \index[dir]{Directive!Pid Directory}
-   This directive  is mandatory and specifies a directory in which the Director 
+   This directive  is mandatory and specifies a directory in which the Director
    may put its process Id file. The process Id file is used to  shutdown
-   Bacula and to prevent multiple copies of  Bacula from running simultaneously. 
+   Bacula and to prevent multiple copies of  Bacula from running simultaneously.
    Standard shell expansion of the {\bf Directory}  is done when the
    configuration file is read so that values such  as {\bf \$HOME} will be
-   properly expanded.  
+   properly expanded.
 
    The PID directory specified must already exist and be
    readable and writable by the Bacula daemon referencing it
 
    Typically on Linux systems, you will set this to:  {\bf /var/run}. If you are
    not installing Bacula in the  system directories, you can use the {\bf Working
-   Directory} as  defined above.  This directive is required.  
+   Directory} as  defined above.  This directive is required.
 
+   \label{Director:Director:ScriptsDirectory}
 \item [Scripts Directory = \lt{}Directory\gt{}]
    \index[dir]{Scripts Directory}
    \index[dir]{Directive!Scripts Directory}
@@ -186,6 +192,7 @@ in the  graphical user interface. This directive is optional.
    file is read so that values such as {\bf \$HOME} will be properly
    expanded.
 
+   \label{Director:Director:QueryFile}
 \item [QueryFile = \lt{}Path\gt{}]
    \index[dir]{QueryFile}
    \index[dir]{Directive!QueryFile}
@@ -195,6 +202,7 @@ in the  graphical user interface. This directive is optional.
    done when the configuration file is read so that values such as {\bf
    \$HOME} will be properly expanded.  This directive is required.
 
+   \label{Director:Director:HeartbeatInterval}
 \item [Heartbeat Interval = \lt{}time-interval\gt{}]
    \index[dir]{Heartbeat Interval}
    \index[dir]{Directive!Heartbeat}
@@ -202,21 +210,22 @@ in the  graphical user interface. This directive is optional.
    set a keepalive interval (heartbeat) in seconds on each of the sockets
    it opens for the Client resource.  This value will override any
    specified at the Director level.  It is implemented only on systems
-   (Linux, ...) that provide the {\bf setsockopt} TCP\_KEEPIDLE function.
+   (Linux, \ldots{}) that provide the {\bf setsockopt} TCP\_KEEPIDLE function.
    The default value is zero, which means no change is made to the socket.
 
-
 \label{DirMaxConJobs}
+
+   \label{Director:Director:MaximumConcurrentJobs}
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
    \index[dir]{Maximum Concurrent Jobs}
    \index[dir]{Directive!Maximum Concurrent Jobs}
    \index[general]{Simultaneous Jobs}
    \index[general]{Concurrent Jobs}
    where \lt{}number\gt{}  is the maximum number of total Director Jobs that
-   should run  concurrently. The default is set to 1, but you may set it to a 
-   larger number.  
+   should run  concurrently. The default is set to 1, but you may set it to a
+   larger number.
 
-   The Volume format becomes more complicated with 
+   The Volume format becomes more complicated with
    multiple simultaneous jobs, consequently, restores may take longer if
    Bacula must sort through interleaved volume blocks from  multiple simultaneous
    jobs. This can be avoided by having each simultaneous job write to
@@ -224,6 +233,7 @@ in the  graphical user interface. This directive is optional.
    to disk simultaneously, then write one spool file at a time to the volume
    thus avoiding excessive interleaving of the different job blocks.
 
+   \label{Director:Director:FdConnectTimeout}
 \item [FD Connect Timeout = \lt{}time\gt{}]
    \index[dir]{FD Connect Timeout}
    \index[dir]{Directive!FD Connect Timeout}
@@ -231,6 +241,7 @@ in the  graphical user interface. This directive is optional.
    attempting to contact the File daemon to start a job, and after which
    the Director will cancel the job.  The default is 30 minutes.
 
+   \label{Director:Director:SdConnectTimeout}
 \item [SD Connect Timeout = \lt{}time\gt{}]
    \index[dir]{SD Connect Timeout}
    \index[dir]{Directive!SD Connect Timeout}
@@ -238,6 +249,7 @@ in the  graphical user interface. This directive is optional.
    attempting to contact the Storage daemon to start a job, and after which
    the Director will cancel the job.  The default is 30 minutes.
 
+   \label{Director:Director:DirAddresses}
 \item [DirAddresses = \lt{}IP-address-specification\gt{}]
    \index[dir]{DirAddresses}
    \index[dir]{Address}
@@ -248,8 +260,8 @@ in the  graphical user interface. This directive is optional.
    this is to show an example:
 
 \footnotesize
-\begin{verbatim}
- DirAddresses  = { 
+\begin{lstlisting}
+ DirAddresses  = {
     ip = { addr = 1.2.3.4; port = 1205;}
     ipv4 = {
         addr = 1.2.3.4; port = http;}
@@ -267,7 +279,7 @@ in the  graphical user interface. This directive is optional.
         addr = bluedot.thun.net
     }
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
 where ip, ip4, ip6, addr, and port are all keywords. Note, that  the address
@@ -276,12 +288,13 @@ a symbolic name (only in the ip specification).  Also, port can be specified
 as a number or as the mnemonic value from  the /etc/services file.  If a port
 is not specified, the default will be used. If an ip  section is specified,
 the resolution can be made either by IPv4 or  IPv6. If ip4 is specified, then
-only IPv4 resolutions will be permitted,  and likewise with ip6. 
+only IPv4 resolutions will be permitted,  and likewise with ip6.
 
 Please note that if you use the DirAddresses directive, you must
-not use either a DirPort or a DirAddress directive in the same 
+not use either a DirPort or a DirAddress directive in the same
 resource.
 
+   \label{Director:Director:DirPort}
 \item [DirPort = \lt{}port-number\gt{}]
    \index[dir]{DirPort}
    \index[dir]{Directive!DirPort}
@@ -292,6 +305,7 @@ resource.
    directive should not be used if you specify DirAddresses (N.B plural)
    directive.
 
+   \label{Director:Director:DirAddress}
 \item [DirAddress = \lt{}IP-Address\gt{}]
    \index[dir]{DirAddress}
    \index[dir]{Directive!DirAddress}
@@ -304,6 +318,7 @@ resource.
    directive only permits a single address to be specified.  This directive
    should not be used if you specify a DirAddresses (N.B. plural) directive.
 
+   \label{Director:Director:DirSourceAddress}
 \item [DirSourceAddress = \lt{}IP-Address\gt{}]
    \index[fd]{DirSourceAddress}
    \index[fd]{Directive!DirSourceAddress}
@@ -313,10 +328,12 @@ resource.
    specified.  If this record is not specified, the Director server will source
    its outgoing connections according to the system routing table (the default).
 
+\phantomsection
+\label{Director:Director:StatisticsRetention}
 \item[Statistics Retention = \lt{}time\gt{}]
    \index[dir]{StatisticsRetention}
-   \index[dir]{Directive!StatisticsRetention}
    \label{PruneStatistics}
+   \index[dir]{Directive!StatisticsRetention}
 
    The \texttt{Statistics Retention} directive defines the length of time that
    Bacula will keep statistics job records in the Catalog database after the
@@ -325,7 +342,7 @@ resource.
    Job records that are older than the specified period.
 
    Theses statistics records aren't use for restore purpose, but mainly for
-   capacity planning, billings, etc. See \ilink{Statistics chapter} for
+   capacity planning, billings, etc. See \ilink{Statistics chapter}{UseBaculaCatalogToExtractInformationChapter} for
    additional information.
 
    See the \ilink{ Configuration chapter}{Time} of this manual for additional
@@ -333,25 +350,67 @@ resource.
 
    The default is 5 years.
 
+  \label{Director:Director:VerId}
 \item[VerId = \lt{}string\gt{}]
   \index[dir]{Directive!VerId}
   where  \lt{}string\gt{} is an identifier which can be used for support purpose.
   This string is displayed using the \texttt{version} command.
 
-\item[MaximumConsoleConnections = \lt{}number\gt{}] 
+  \label{Director:Director:MaximumConsoleConnections}
+\item[MaximumConsoleConnections = \lt{}number\gt{}]
   \index[dir]{MaximumConsoleConnections}
   \index[dir]{Directive!MaximumConsoleConnections}
   \index[dir]{Console}
    where \lt{}number\gt{}  is the maximum number of Console Connections that
-   could run  concurrently. The default is set to 20, but you may set it to a 
+   could run  concurrently. The default is set to 20, but you may set it to a
    larger number.
 
+\label{Director:Director:MaximumReloadRequests}
+ \item[MaximumReloadRequests = \lt{}number\gt{}]
+\index[dir]{MaximumReloadRequests}
+\index[dir]{Directive!MaximumReloadRequests}
+\index[dir]{Console}
+
+Where \lt{}number\gt{} is the maximum number of \texttt{reload} command that
+can be done while jobs are running. The default is set to 32 and is usually
+sufficient.
+
+\label{Director:Director:End}
+
+%   \label{Director:SharedStorage}
+%\item[SharedStorage = \lt{}yes\vb{}no\gt{}]
+%   \index[dir]{SharedStorage}
+%   \index[dir]{Directive!SharedStorage}
+%
+%   The \texttt{Shared Storage} directive is a Bacula Enterprise feature that
+%   allows you to share volumes between different Storage resources. This
+%   directive should be used \textbf{only} if all \texttt{Media Type} are
+%   correctly set across all Devices.
+%
+%   The \texttt{Shared Storage} directive should be used when using the SAN
+%   Shared Storage plugin or when accessing from the Director Storage resources
+%   directly to Devices of an Autochanger.
+%
+%   When sharing volumes between different Storage resources, you will
+%   need also to use the \texttt{reset-storageid} script before using the
+%   \texttt{update slots} command. This script can be scheduled once a day in
+%   an Admin job.
+%
+%\begin{lstlisting}
+% $ /opt/bacula/scripts/reset-storageid MediaType StorageName
+% $ bconsole
+% * update slots storage=StorageName drive=0
+%\end{lstlisting}
+%
+%   Please contact Bacula Systems support to get help on this advanced
+%   configuration.
+
 \end{description}
 
-The following is an example of a valid Director resource definition: 
+The following is an example of a valid Director resource definition:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Director {
   Name = HeadMan
   WorkingDirectory = "$HOME/bacula/bin/working"
@@ -360,15 +419,15 @@ Director {
   QueryFile = "$HOME/bacula/bin/query.sql"
   Messages = Standard
 }
-\end{verbatim}
+\end{lstlisting} %% $
 \normalsize
 
-\section{The Job Resource}
 \label{JobResource}
+\section{The Job Resource}
 \index[general]{Resource!Job}
 \index[general]{Job Resource}
 
-The Job resource defines a Job (Backup, Restore, ...) that Bacula must
+The Job resource defines a Job (Backup, Restore, \ldots{}) that Bacula must
 perform. Each Job resource definition contains the name of a Client and
 a FileSet to backup, the Schedule for the Job, where the data
 are to be stored, and what media Pool can be used. In effect, each Job
@@ -376,13 +435,13 @@ resource must specify What, Where, How, and When or FileSet, Storage,
 Backup/Restore/Level, and Schedule respectively. Note, the FileSet must
 be specified for a restore job for historical reasons, but it is no longer used.
 
-Only a single type ({\bf Backup}, {\bf Restore}, ...) can be specified for any
+Only a single type ({\bf Backup}, {\bf Restore}, \ldots{}) can be specified for any
 job. If you want to backup multiple FileSets on the same Client or multiple
-Clients, you must define a Job for each one. 
+Clients, you must define a Job for each one.
 
 Note, you define only a single Job to do the Full, Differential, and
-Incremental backups since the different backup levels are tied together by 
-a unique Job name.  Normally, you will have only one Job per Client, but   
+Incremental backups since the different backup levels are tied together by
+a unique Job name.  Normally, you will have only one Job per Client, but
 if a client has a really huge number of files (more than several million),
 you might want to split it into to Jobs each with a different FileSet
 covering only part of the total files.
@@ -396,15 +455,16 @@ Client and FileSet or multiple Storage daemons that are used, the
 restore will not work.  This problem can be resolved by defining multiple
 FileSet definitions (the names must be different, but the contents of
 the FileSets may be the same).
-               
+
 
 \begin{description}
 
 \item [Job]
    \index[dir]{Job}
    \index[dir]{Directive!Job}
-   Start of the Job resource. At least one Job  resource is required. 
+   Start of the Job resource. At least one Job  resource is required.
 
+   \label{Director:Job:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
@@ -412,25 +472,27 @@ the FileSets may be the same).
    console program to start a job. If the  name contains spaces, it must be
    specified between quotes. It is  generally a good idea to give your job the
    same name as the Client  that it will backup. This permits easy
-   identification of jobs.  
+   identification of jobs.
 
    When the job actually runs, the unique Job Name will consist  of the name you
    specify here followed by the date and time the  job was scheduled for
-   execution. This directive is required. 
+   execution. This directive is required.
 
+  \label{Director:Job:Enabled}
 \item [Enabled = \lt{}yes\vb{}no\gt{}]
   \index[dir]{Enable}
   \index[dir]{Directive!Enable}
   This directive allows you to enable or disable automatic execution
   via the scheduler of a Job.
 
+   \label{Director:Job:Type}
 \item [Type = \lt{}job-type\gt{}]
    \index[dir]{Type}
    \index[dir]{Directive!Type}
    The {\bf Type} directive specifies  the Job type, which may be one of the
    following: {\bf Backup},  {\bf Restore}, {\bf Verify}, or {\bf Admin}. This
-   directive  is required. Within a particular Job Type, there are also Levels 
-   as discussed in the next item.  
+   directive  is required. Within a particular Job Type, there are also Levels
+   as discussed in the next item.
 
 \begin{description}
 
@@ -439,7 +501,7 @@ the FileSets may be the same).
    Run a backup Job. Normally you will  have at least one Backup job for each
    client you want  to save. Normally, unless you turn off cataloging,  most all
    the important statistics and data concerning  files backed up will be placed
-   in the catalog. 
+   in the catalog.
 
 \item [Restore]
    \index[dir]{Restore}
@@ -462,28 +524,29 @@ the FileSets may be the same).
    Run a verify Job. In general, {\bf verify}  jobs permit you to compare the
    contents of the catalog  to the file system, or to what was backed up. In
    addition,  to verifying that a tape that was written can be read,  you can
-   also use {\bf verify} as a sort of tripwire  intrusion detection.  
+   also use {\bf verify} as a sort of tripwire  intrusion detection.
 
 \item [Admin]
    \index[dir]{Admin}
    Run an admin Job. An {\bf Admin} job can  be used to periodically run catalog
    pruning, if you  do not want to do it at the end of each {\bf Backup}  Job.
-   Although an Admin job is recorded in the  catalog, very little data is saved. 
+   Although an Admin job is recorded in the  catalog, very little data is saved.
 \end{description}
-
 \label{Level}
 
+
+\label{Director:Job:Level}
 \item [Level = \lt{}job-level\gt{}]
 \index[dir]{Level}
 \index[dir]{Directive!Level}
    The Level directive specifies the default Job level to be run.  Each
-   different Job Type (Backup, Restore, ...) has a different set of Levels
+   different Job Type (Backup, Restore, \ldots{}) has a different set of Levels
    that can be specified.  The Level is normally overridden by a different
    value that is specified in the {\bf Schedule} resource.  This directive
    is not required, but must be specified either by a {\bf Level} directive
    or as an override specified in the {\bf Schedule} resource.
 
-For a {\bf Backup} Job, the Level may be one of the  following:  
+For a {\bf Backup} Job, the Level may be one of the  following:
 
 \begin{description}
 
@@ -501,26 +564,26 @@ For a {\bf Backup} Job, the Level may be one of the  following:
    into a Full backup.  When the Director looks for a valid backup record
    in the catalog database, it looks for a previous Job with:
 
-\begin{itemize}
-\item The same Job name.  
-\item The same Client name.  
+\begin{bsysitemize}
+\item The same Job name.
+\item The same Client name.
 \item The same FileSet (any change to the definition of  the FileSet such as
    adding or deleting a file in the  Include or Exclude sections constitutes a
-   different FileSet.  
-\item The Job was a Full, Differential, or Incremental backup.  
-\item The Job terminated normally (i.e. did not fail or was not  canceled).  
+   different FileSet.
+\item The Job was a Full, Differential, or Incremental backup.
+\item The Job terminated normally (i.e. did not fail or was not  canceled).
 \item The Job started no longer ago than {\bf Max Full Interval}.
-\end{itemize}
+\end{bsysitemize}
 
    If all the above conditions do not hold, the Director will upgrade  the
    Incremental to a Full save. Otherwise, the Incremental  backup will be
-   performed as requested.  
+   performed as requested.
 
    The File daemon (Client) decides which files to backup for an
    Incremental backup by comparing start time of the prior Job (Full,
    Differential, or Incremental) against the time each file was last
-   "modified" (st\_mtime) and the time its attributes were last
-   "changed"(st\_ctime).  If the file was modified or its attributes
+   ``modified'' (st\_mtime) and the time its attributes were last
+   ``changed''(st\_ctime).  If the file was modified or its attributes
    changed on or after this start time, it will then be backed up.
 
    Some virus scanning software may change st\_ctime while
@@ -529,7 +592,7 @@ For a {\bf Backup} Job, the Level may be one of the  following:
    cause st\_ctime to change and hence Bacula will backup the file during
    an Incremental or Differential backup.  In the case of Sophos virus
    scanning, you can prevent it from resetting the access time (st\_atime)
-   and hence changing st\_ctime by using the {\bf \verb:--:no-reset-atime}
+   and hence changing st\_ctime by using the {\bf \lstinline:--:no-reset-atime}
    option.  For other software, please see their manual.
 
    When Bacula does an Incremental backup, all modified files that are
@@ -564,25 +627,25 @@ For a {\bf Backup} Job, the Level may be one of the  following:
    When the Director looks for a valid Full backup record in the catalog
    database, it looks for a previous Job with:
 
-\begin{itemize}
-\item The same Job name.  
-\item The same Client name.  
+\begin{bsysitemize}
+\item The same Job name.
+\item The same Client name.
 \item The same FileSet (any change to the definition of  the FileSet such as
    adding or deleting a file in the  Include or Exclude sections constitutes a
-   different FileSet.  
-\item The Job was a FULL backup.  
-\item The Job terminated normally (i.e. did not fail or was not  canceled).  
+   different FileSet.
+\item The Job was a FULL backup.
+\item The Job terminated normally (i.e. did not fail or was not  canceled).
 \item The Job started no longer ago than {\bf Max Full Interval}.
-\end{itemize}
+\end{bsysitemize}
 
    If all the above conditions do not hold, the Director will  upgrade the
    Differential to a Full save. Otherwise, the  Differential backup will be
-   performed as requested.  
+   performed as requested.
 
    The File daemon (Client) decides which files to backup for a
    differential backup by comparing the start time of the prior Full backup
-   Job against the time each file was last "modified" (st\_mtime) and the
-   time its attributes were last "changed" (st\_ctime).  If the file was
+   Job against the time each file was last ``modified'' (st\_mtime) and the
+   time its attributes were last ``changed'' (st\_ctime).  If the file was
    modified or its attributes were changed on or after this start time, it
    will then be backed up.  The start time used is displayed after the {\bf
    Since} on the Job report.  In rare cases, using the start time of the
@@ -614,7 +677,7 @@ For a {\bf Backup} Job, the Level may be one of the  following:
    delete the original. Alternatively, you can move the directory, then
    use the {\bf touch} program to update the timestamps.
 
-%% TODO: merge this with incremental 
+%% TODO: merge this with incremental
    However, to manage deleted files or directories changes in the
    catalog during an Differential backup you can use \texttt{accurate}
    mode. This is quite memory consuming process. See \ilink{Accurate
@@ -633,11 +696,25 @@ For a {\bf Backup} Job, the Level may be one of the  following:
    all the volumes on which the preceding Incremental and Differential
    backups since the last Full are done.
 
+\item [VirtualFull]
+   \index[dir]{VirtualFull}
+
+   When the Level is set to VirtualFull, it permits you to consolidate the
+   previous Full backup plus the most recent Differential backup and any
+   subsequent Incremental backups into a new Full backup.  This new Full backup
+   will then be considered as the most recent Full for any future Incremental
+   or Differential backups.  The VirtualFull backup is accomplished without
+   contacting the client by reading the previous backup data and writing it to
+   a volume in a different pool.
+
+   Bacula's virtual backup feature is often called Synthetic Backup or
+   Consolidation in other backup products.
+
 \end{description}
 
-For a {\bf Restore} Job, no level needs to be specified.  
+For a {\bf Restore} Job, no level needs to be specified.
 
-For a {\bf Verify} Job, the Level may be one of the  following:  
+For a {\bf Verify} Job, the Level may be one of the  following:
 
 \begin{description}
 
@@ -652,7 +729,7 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    have been modified or deleted and if any new files have been added.
    This can be used to detect system intrusion.  Typically you would
    specify a {\bf FileSet} that contains the set of system files that
-   should not change (e.g.  /sbin, /boot, /lib, /bin, ...).  Normally, you
+   should not change (e.g.  /sbin, /boot, /lib, /bin, \ldots{}).  Normally, you
    run the {\bf InitCatalog} level verify one time when your system is
    first setup, and then once again after each modification (upgrade) to
    your system.  Thereafter, when your want to check the state of your
@@ -678,9 +755,10 @@ For a {\bf Verify} Job, the Level may be one of the  following:
 \item [VolumeToCatalog]
 \index[dir]{VolumeToCatalog}
    This level causes Bacula to read the file attribute data written to the
-   Volume from the last Job.  The file attribute data are compared to the
+   Volume from the last backup Job for the job specified on the {\bf VerifyJob}
+   directive.  The file attribute data are compared to the
    values saved in the Catalog database and any differences are reported.
-   This is similar to the {\bf Catalog} level except that instead of
+   This is similar to the {\bf DiskToCatalog} level except that instead of
    comparing the disk file attributes to the catalog database, the
    attribute data written to the Volume is read and compared to the catalog
    database.  Although the attribute data including the signatures (MD5 or
@@ -697,7 +775,7 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    This level causes Bacula to read the files as they currently are on
    disk, and to compare the current file attributes with the attributes
    saved in the catalog from the last backup for the job specified on the
-   {\bf VerifyJob} directive.  This level differs from the {\bf Catalog}
+   {\bf VerifyJob} directive.  This level differs from the {\bf VolumeToCatalog}
    level described above by the fact that it doesn't compare against a
    previous Verify job but against a previous backup.  When you run this
    level, you must supply the verify options on your Include statements.
@@ -711,19 +789,20 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    have been deleted.
 \end{description}
 
+\label{Director:Job:Accurate}
 \item [Accurate = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Accurate}
    In accurate mode, the File daemon knowns exactly which files were present
    after the last backup. So it is able to handle deleted or renamed files.
 
-   When restoring a FileSet for a specified date (including "most
-   recent"), Bacula is able to restore exactly the files and
+   When restoring a FileSet for a specified date (including ``most
+   recent''), Bacula is able to restore exactly the files and
    directories that existed at the time of the last backup prior to
    that date including ensuring that deleted files are actually deleted,
    and renamed directories are restored properly.
 
    In this mode, the File daemon must keep data concerning all files in
-   memory.  So you do not have sufficient memory, the restore may
+   memory.  So If you do not have sufficient memory, the backup may
    either be terribly slow or fail.
 
 %%   $$ memory = \sum_{i=1}^{n}(strlen(path_i + file_i) + sizeof(CurFile))$$
@@ -732,6 +811,7 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    approximately 64 Megabytes of RAM on your File daemon to hold the
    required information.
 
+   \label{Director:Job:VerifyJob}
 \item [Verify Job = \lt{}Job-Resource-Name\gt{}]
    \index[dir]{Verify Job}
    \index[dir]{Directive!Verify Job}
@@ -743,6 +823,7 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    verified (most often a {\bf VolumeToCatalog}) so that the tape just
    written is re-read.
 
+\label{Director:Job:JobDefs}
 \item [JobDefs = \lt{}JobDefs-Resource-Name\gt{}]
 \index[dir]{JobDefs}
 \index[dir]{Directive!JobDefs}
@@ -756,6 +837,7 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    variations such as different Clients.  A simple example of the use of
    JobDefs is provided in the default bacula-dir.conf file.
 
+\label{Director:Job:Bootstrap}
 \item [Bootstrap = \lt{}bootstrap-file\gt{}]
 \index[dir]{Bootstrap}
 \index[dir]{Directive!Bootstrap}
@@ -774,8 +856,9 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    For additional details of the {\bf bootstrap} file, please see
    \ilink{Restoring Files with the Bootstrap File}{BootstrapChapter} chapter
    of this manual.
-
 \label{writebootstrap}
+
+\label{Director:Job:WriteBootstrap}
 \item [Write Bootstrap =  \lt{}bootstrap-file-specification\gt{}]
 \index[dir]{Write Bootstrap}
 \index[dir]{Directive!Write Bootstrap}
@@ -798,25 +881,26 @@ For a {\bf Verify} Job, the Level may be one of the  following:
    your catalog database.
 
    If the {\bf bootstrap-file-specification} begins with a vertical bar
-   (\verb+|+), Bacula will use the specification as the name of a program to which
+   (\lstinline+|+), Bacula will use the specification as the name of a program to which
    it will pipe the bootstrap record.  It could for example be a shell
    script that emails you the bootstrap record.
 
    On versions 1.39.22 or greater, before opening the file or executing the
-   specified command, Bacula performs 
+   specified command, Bacula performs
    \ilink{character substitution}{character substitution} like in RunScript
    directive. To automatically manage your bootstrap files, you can use
    this in your {\bf JobDefs} resources:
-\begin{verbatim}
+\begin{lstlisting}
 JobDefs {
    Write Bootstrap = "%c_%n.bsr"
    ...
 }
-\end{verbatim}
+\end{lstlisting}
 
    For more details on using this file, please see the chapter entitled
    \ilink{The Bootstrap File}{BootstrapChapter} of this manual.
 
+\label{Director:Job:Client}
 \item [Client = \lt{}client-resource-name\gt{}]
 \index[dir]{Client}
 \index[dir]{Directive!Client}
@@ -824,27 +908,30 @@ JobDefs {
    the  current Job. Only a single Client may be specified in any one Job.  The
    Client runs on the machine to be backed up,  and sends the requested files to
    the Storage daemon for backup,  or receives them when restoring. For
-   additional details, see the  
-   \ilink{Client Resource section}{ClientResource2} of this chapter.
-   This directive is required. 
+   additional details, see the
+   \ilink{Client Resource section}{ClientResource} of this chapter.
+   This directive is required.
 
+\label{Director:Job:Fileset}
 \item [FileSet = \lt{}FileSet-resource-name\gt{}]
 \index[dir]{FileSet}
 \index[dir]{Directive!FileSet}
    The FileSet directive specifies the FileSet that will be used in the
    current Job.  The FileSet specifies which directories (or files) are to
-   be backed up, and what options to use (e.g.  compression, ...).  Only a
+   be backed up, and what options to use (e.g.  compression, \ldots{}).  Only a
    single FileSet resource may be specified in any one Job.  For additional
    details, see the \ilink{FileSet Resource section}{FileSetResource} of
    this chapter.  This directive is required.
 
-\item [Base = \lt{}job-resource-name, ...\gt{}]
+\label{Director:Job:Base}
+\item [Base = \lt{}job-resource-name, \ldots{}\gt{}]
 \index[dir]{Base}
 \index[dir]{Directive!Base}
 The Base directive permits to specify the list of jobs that will be used during
 Full backup as base. This directive is optional. See the \ilink{Base Job
 chapter}{basejobs} for more information.
 
+\label{Director:Job:Messages}
 \item [Messages = \lt{}messages-resource-name\gt{}]
 \index[dir]{Messages}
 \index[dir]{Directive!Messages}
@@ -855,6 +942,7 @@ chapter}{basejobs} for more information.
    \ilink{Messages Resource}{MessagesChapter} Chapter of this manual.  This
    directive is required.
 
+\label{Director:Job:Pool}
 \item [Pool = \lt{}pool-resource-name\gt{}]
 \index[dir]{Pool}
 \index[dir]{Directive!Pool}
@@ -865,33 +953,37 @@ chapter}{basejobs} for more information.
    Pools.  For additional details, see the \ilink{Pool Resource
    section}{PoolResource} of this chapter.  This directive is required.
 
+\label{Director:Job:FullBackupPool}
 \item [Full Backup Pool = \lt{}pool-resource-name\gt{}]
 \index[dir]{Full Backup Pool}
 \index[dir]{Directive!Full Backup Pool}
    The {\it Full Backup Pool} specifies a Pool to be used for Full backups.
    It will override any Pool specification during a Full backup.  This
    directive is optional.
-   
-\item [Differential Backup Pool = \lt{}pool-resource-name\gt{}]  
+
+\label{Director:Job:DifferentialBackupPool}
+\item [Differential Backup Pool = \lt{}pool-resource-name\gt{}]
 \index[dir]{Differential Backup Pool}
 \index[dir]{Directive!Differential Backup Pool}
    The {\it Differential Backup Pool} specifies a Pool to be used for
    Differential backups.  It will override any Pool specification during a
    Differential backup.  This directive is optional.
-   
-\item [Incremental Backup Pool = \lt{}pool-resource-name\gt{}]  
+
+\label{Director:Job:IncrementalBackupPool}
+\item [Incremental Backup Pool = \lt{}pool-resource-name\gt{}]
 \index[dir]{Incremental Backup Pool}
 \index[dir]{Directive!Incremental Backup Pool}
    The {\it Incremental Backup Pool} specifies a Pool to be used for
    Incremental backups.  It will override any Pool specification during an
    Incremental backup.  This directive is optional.
 
+\label{Director:Job:Schedule}
 \item [Schedule = \lt{}schedule-name\gt{}]
 \index[dir]{Schedule}
 \index[dir]{Directive!Schedule}
    The Schedule directive defines what schedule is to be used for the Job.
    The schedule in turn determines when the Job will be automatically
-   started and what Job level (i.e.  Full, Incremental, ...) is to be run.
+   started and what Job level (i.e.  Full, Incremental, \ldots{}) is to be run.
    This directive is optional, and if left out, the Job can only be started
    manually using the Console program.  Although you may specify only a
    single Schedule resource for any one job, the Schedule resource may
@@ -901,20 +993,22 @@ chapter}{basejobs} for more information.
    considerable flexibility in what can be done with a single Job.  For
    additional details, see the \ilink{Schedule Resource
    Chapter}{ScheduleResource} of this manual.
-          
 
+
+\label{Director:Job:Storage}
 \item [Storage = \lt{}storage-resource-name\gt{}]
 \index[dir]{Storage}
 \index[dir]{Directive!Storage}
    The Storage directive defines the name of the storage services where you
    want to backup the FileSet data.  For additional details, see the
-   \ilink{Storage Resource Chapter}{StorageResource2} of this manual.
+   \ilink{Storage Resource Chapter}{StorageResource} of this manual.
    The Storage resource may also be specified in the Job's Pool resource,
    in which case the value in the Pool resource overrides any value
    in the Job. This Storage resource definition is not required by either
    the Job resource or in the Pool, but it must be specified in
    one or the other, if not an error will result.
 
+\label{Director:Job:MaxStartDelay}
 \item [Max Start Delay = \lt{}time\gt{}]
 \index[dir]{Max Start Delay}
 \index[dir]{Directive!Max Start Delay}
@@ -926,14 +1020,20 @@ chapter}{basejobs} for more information.
    to prevent jobs from running during day time hours.  The default is 0
    which indicates no limit.
 
+\label{Director:Job:MaxRunTime}
 \item [Max Run Time = \lt{}time\gt{}]
 \index[dir]{Max Run Time}
 \index[dir]{Directive!Max Run Time}
    The time specifies the maximum allowed time that a job may run, counted
    from when the job starts, ({\bf not} necessarily the same as when the
-   job was scheduled). By default, the Director will let a job running during
-   6 days.
+   job was scheduled).
+
+   By default, the the watchdog thread will kill any Job that has run more
+   than 6 days.  The maximum watchdog timeout is independent of MaxRunTime
+   and cannot be changed.
+
 
+\label{Director:Job:IncrementalWaitRunTime}
 \item [Incremental|Differential Max Wait Time = \lt{}time\gt{}]
 \index[dir]{Incremental Wait Run Time}
 \index[dir]{Differential Wait Run Time}
@@ -941,6 +1041,7 @@ chapter}{basejobs} for more information.
     Theses directives have been deprecated in favor of
     \texttt{Incremental|Differential Max Run Time} since bacula 2.3.18.
 
+\label{Director:Job:IncrementalMaxRunTime}
 \item [Incremental Max Run Time = \lt{}time\gt{}]
 \index[dir]{Incremental Max Run Time}
 \index[dir]{Directive!Incremental Max Run Time}
@@ -948,6 +1049,7 @@ The time specifies the maximum allowed time that an Incremental backup job may
 run, counted from when the job starts, ({\bf not} necessarily the same as when
 the job was scheduled).
 
+\label{Director:Job:DifferentialMaxRunTime}
 \item [Differential Max Wait Time = \lt{}time\gt{}]
 \index[dir]{Differential Max Run Time}
 \index[dir]{Directive!Differential Max Run Time}
@@ -955,6 +1057,7 @@ The time specifies the maximum allowed time that a Differential backup job may
 run, counted from when the job starts, ({\bf not} necessarily the same as when
 the job was scheduled).
 
+\label{Director:Job:MaxRunSchedTime}
 \item [Max Run Sched Time = \lt{}time\gt{}]
 \index[dir]{Max Run Sched Time}
 \index[dir]{Directive!Max Run Sched Time}
@@ -964,6 +1067,7 @@ when the job was scheduled. This can be useful to prevent jobs from running
 during working hours. We can see it like \texttt{Max Start Delay + Max Run
   Time}.
 
+\label{Director:Job:MaxWaitTime}
 \item [Max Wait Time = \lt{}time\gt{}]
 \index[dir]{Max Wait Time}
 \index[dir]{Directive!Max Wait Time}
@@ -973,13 +1077,9 @@ during working hours. We can see it like \texttt{Max Start Delay + Max Run
    when the job starts, ({\bf not} necessarily the same as when the job was
    scheduled). This directive works as expected since bacula 2.3.18.
 
-\begin{figure}[htbp]
-  \centering
-  \includegraphics[width=13cm]{\idir different_time.eps}
-  \caption{Job time control directives}
-  \label{fig:differenttime}
-\end{figure}
+\bsysimageH{different_time}{Job time control directives}{fig:differenttime}
 
+\label{Director:Job:MaximumBandwidth}
 \item [Maximum Bandwidth = \lt{}speed\gt{}]
 \index[dir]{Maximum Bandwidth}
 \index[dir]{Directive!Maximum Bandwidth}
@@ -987,6 +1087,7 @@ during working hours. We can see it like \texttt{Max Start Delay + Max Run
 The speed parameter specifies the maximum allowed bandwidth that a job may
 use. The speed parameter should be specified in k/s, kb/s, m/s or mb/s.
 
+\label{Director:Job:MaxFullInterval}
 \item [Max Full Interval = \lt{}time\gt{}]
 \index[dir]{Max Full Interval}
 \index[dir]{Directive!Max Full Interval}
@@ -997,8 +1098,9 @@ use. The speed parameter should be specified in k/s, kb/s, m/s or mb/s.
    upgraded to Full backups automatically. If this directive is not present,
    or specified as 0, then the age of the previous Full backup is not
    considered.
-
 \label{PreferMountedVolumes}
+
+\label{Director:Job:PreferMountedVolumes}
 \item [Prefer Mounted Volumes = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Prefer Mounted Volumes}
 \index[dir]{Directive!Prefer Mounted Volumes}
@@ -1006,8 +1108,8 @@ use. The speed parameter should be specified in k/s, kb/s, m/s or mb/s.
    yes), the Storage daemon is requested to select either an Autochanger or
    a drive with a valid Volume already mounted in preference to a drive
    that is not ready.  This means that all jobs will attempt to append
-   to the same Volume (providing the Volume is appropriate -- right Pool, 
-   ... for that job), unless you are using multiple pools.
+   to the same Volume (providing the Volume is appropriate -- right Pool,
+   \ldots{} for that job), unless you are using multiple pools.
    If no drive with a suitable Volume is available, it
    will select the first available drive.  Note, any Volume that has
    been requested to be mounted, will be considered valid as a mounted
@@ -1020,7 +1122,7 @@ use. The speed parameter should be specified in k/s, kb/s, m/s or mb/s.
    same Volume (assuming the Pool is the same for all jobs).  Setting
    Prefer Mounted Volumes to no can be useful for those sites
    with multiple drive autochangers that prefer to maximize backup
-   throughput at the expense of using additional drives and Volumes. 
+   throughput at the expense of using additional drives and Volumes.
    This means that the job will prefer to use an unused drive rather
    than use a drive that is already in use.
 
@@ -1035,34 +1137,39 @@ use. The speed parameter should be specified in k/s, kb/s, m/s or mb/s.
    pools so that Bacula will be forced to mount Volumes from those Pools
    on different drives.
 
+\label{Director:Job:PruneJobs}
 \item [Prune Jobs = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Prune Jobs}
 \index[dir]{Directive!Prune Jobs}
-   Normally, pruning of Jobs from the Catalog is specified on a Pool by
-   Pool basis in the Pool resource with the {\bf AutoPrune} directive.
+   Normally, pruning of Jobs from the Catalog is specified on a Client by
+   Client basis in the Client resource with the {\bf AutoPrune} directive.
    If this directive is specified (not normally) and the value is {\bf
-   yes}, it will override the value specified in the Pool resource.  The
+   yes}, it will override the value specified in the Client resource.  The
    default is {\bf no}.
 
 
+\label{Director:Job:PruneFiles}
 \item [Prune Files = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Prune Files}
 \index[dir]{Directive!Prune Files}
-   Normally, pruning of Files from the Catalog is specified on a Pool by
-   Pool basis in the Pool resource with the {\bf AutoPrune} directive.
+   Normally, pruning of Files from the Catalog is specified on a Client by
+   Client basis in the Client resource with the {\bf AutoPrune} directive.
    If this directive is specified (not normally) and the value is {\bf
-   yes}, it will override the value specified in the Pool resource.  The
+   yes}, it will override the value specified in the Client resource.  The
    default is {\bf no}.
 
+\label{Director:Job:PruneVolumes}
 \item [Prune Volumes = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Prune Volumes}
 \index[dir]{Directive!Prune Volumes}
-   Normally, pruning of Volumes from the Catalog is specified on a Pool
-   by Pool basis in the Pool resource with the {\bf AutoPrune}
-   directive.  If this directive is specified (not normally) and the value
-   is {\bf yes}, it will override the value specified in the Pool
-   resource.  The default is {\bf no}.
+   Normally, pruning of Volumes from the Catalog is specified on a Pool by
+   Pool basis in the Pool resource with the {\bf AutoPrune} directive.
+   Note, this is different from File and Job pruning which is done on a
+   Client by Client basis.  If this directive is specified (not normally)
+   and the value is {\bf yes}, it will override the value specified in the
+   Pool resource.  The default is {\bf no}.
 
+   \label{Director:Job:Runscript}
 \item [RunScript \{\lt{}body-of-runscript\gt{}\}]
    \index[dir]{RunScript}
    \index[dir]{Directive!Run Script}
@@ -1088,37 +1195,16 @@ use. The speed parameter should be specified in k/s, kb/s, m/s or mb/s.
    more information. You need to specify needed information on command line, nothing
    will be prompted. Example :
 
-\begin{verbatim}
+\begin{lstlisting}
    Console = "prune files client=%c"
    Console = "update stats age=3"
-\end{verbatim}
+\end{lstlisting}
 
    You can specify more than one Command/Console option per RunScript.
 
    You can use following options may be specified in the body
    of the runscript:\\
-
-\begin{tabular}{|c|c|c|l}
-Options         & Value  & Default & Information   \\
-\hline
-\hline
-Runs On Success & Yes/No & {\it Yes} & Run command if JobStatus is successful\\
-\hline
-Runs On Failure & Yes/No & {\it No} & Run command if JobStatus isn't successful\\
-\hline
-Runs On Client  & Yes/No & {\it Yes} & Run command on client\\
-\hline
-Runs When       & Before|After|Always|\textsl{AfterVSS} & {\it Never} & When run commands\\
-\hline
-Fail Job On Error & Yes/No & {\it Yes} & Fail job if script returns 
-                                          something different from 0 \\
-\hline
-Command          &       &          & Path to your script\\
-\hline
-Console          &       &          & Console command\\
-\hline
-\end{tabular}
-   \\
+   \LTXtable{0.95\linewidth}{table_runscript}
 
    Any output sent by the command to standard output will be included in the
    Bacula job report.  The command string must be a valid program name or name
@@ -1129,64 +1215,60 @@ Console          &       &          & Console command\\
    command, but there is no shell interpretation, as a consequence, if you
    invoke complicated commands or want any shell features such as redirection
    or piping, you must call a shell script and do it inside that script.
+
    Before submitting the specified command to the operating system, Bacula
    performs character substitution of the following characters:
-
 \label{character substitution}
+
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
     %% = %
+    %b = Job Bytes
     %c = Client's name
-    %d = Director's name
+    %d = Daemon's name (Such as host-dir or host-fd)
+    %D = Director's name (Also valid on file daemon)
     %e = Job Exit Status
+    %f = Job FileSet (Only on director side)
+    %F = Job Files
     %h = Client address
     %i = JobId
     %j = Unique Job id
     %l = Job Level
     %n = Job name
+    %p = Pool name (Only on director side)
     %s = Since time
     %t = Job type (Backup, ...)
     %v = Volume name (Only on director side)
-\end{verbatim}
+    %w = Storage name (Only on director side)
+    %x = Spooling enabled? ("yes" or "no")
+
+\end{lstlisting}
 \normalsize
 
 Some character substitutions are not available in all situations. The Job Exit
 Status code \%e edits the following values:
 
+
 \index[dir]{Exit Status}
-\begin{itemize}
+\begin{bsysitemize}
 \item OK
 \item Error
 \item Fatal Error
 \item Canceled
 \item Differences
 \item Unknown term code
-\end{itemize}
+\end{bsysitemize}
 
-   Thus if you edit it on a command line, you will need to enclose 
+   Thus if you edit it on a command line, you will need to enclose
    it within some sort of quotes.
 
+\label{Director:Job:End}
 
 You can use these following shortcuts:\\
 
-\begin{tabular}{|c|c|c|c|c|c}
-Keyword & RunsOnSuccess & RunsOnFailure  & FailJobOnError & Runs On Client & RunsWhen  \\
-\hline
-Run Before Job         &        &       & Yes     & No     & Before \\
-\hline
-Run After Job          &  Yes   &   No  &         & No     & After  \\
-\hline
-Run After Failed Job   &  No    &  Yes  &         & No     & After  \\
-\hline
-Client Run Before Job  &        &       & Yes     & Yes    & Before \\
-\hline
-Client Run After Job   &  Yes   &   No  &         & Yes    & After  \\
-\end{tabular}
-
+\LTXtable{0.95\linewidth}{table_runscriptshortcuts}
 Examples:
-\begin{verbatim}
+\begin{lstlisting}
 RunScript {
     RunsWhen = Before
     FailJobOnError = No
@@ -1198,7 +1280,7 @@ RunScript {
     RunsOnFailure = yes
     Command = "/etc/init.d/apache start"
 }
-\end{verbatim}
+\end{lstlisting}
 
    {\bf Notes about ClientRunBeforeJob}
 
@@ -1212,14 +1294,14 @@ RunScript {
    You can run scripts just after snapshots initializations with
    \textsl{AfterVSS} keyword.
 
-   In addition, for a Windows client on version 1.33 and above, please take
+   In addition, for a Windows client, please take
    note that you must ensure a correct path to your script.  The script or
    program can be a .com, .exe or a .bat file.  If you just put the program
    name in then Bacula will search using the same rules that cmd.exe uses
    (current directory, Bacula bin directory, and PATH).  It will even try the
    different extensions in the same order as cmd.exe.
    The command can be anything that cmd.exe or command.com will recognize
-   as an executable file.  
+   as an executable file.
 
    However, if you have slashes in the program name then Bacula figures you
    are fully specifying the name, so you must also explicitly add the three
@@ -1228,20 +1310,20 @@ RunScript {
    The command is run in a Win32 environment, so Unix like commands will not
    work unless you have installed and properly configured Cygwin in addition
    to and separately from Bacula.
-   
+
    The System \%Path\% will be searched for the command.  (under the
    environment variable dialog you have have both System Environment and
    User Environment, we believe that only the System environment will be
    available to bacula-fd, if it is running as a service.)
-   
+
    System environment variables can be referenced with \%var\% and
-   used as either part of the command name or arguments.  
+   used as either part of the command name or arguments.
 
    So if you have a script in the Bacula\\bin directory then the following lines
    should work fine:
-   
+
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
         Client Run Before Job = systemstate
 or
         Client Run Before Job = systemstate.bat
@@ -1251,7 +1333,7 @@ or
         Client Run Before Job = "systemstate.bat"
 or
         ClientRunBeforeJob = "\"C:/Program Files/Bacula/systemstate.bat\""
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
 The outer set of quotes is removed when the configuration file is parsed.
@@ -1261,22 +1343,22 @@ program name is.
 
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 ClientRunBeforeJob = "\"C:/Program Files/Software
      Vendor/Executable\" /arg1 /arg2 \"foo bar\""
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-   The special characters 
-\begin{verbatim}
+   The special characters
+\begin{lstlisting}
 &<>()@^|
-\end{verbatim}
+\end{lstlisting}
    will need to be quoted,
    if they are part of a filename or argument.
-   
-   If someone is logged in, a blank "command" window running the commands
+
+   If someone is logged in, a blank ``command'' window running the commands
    will be present during the execution of the command.
-   
+
    Some Suggestions from Phil Stracchino for running on Win32 machines with
    the native Win32 File daemon:
 
@@ -1284,20 +1366,20 @@ ClientRunBeforeJob = "\"C:/Program Files/Software
    \item You might want the ClientRunBeforeJob directive to specify a .bat
       file which runs the actual client-side commands, rather than trying
       to run (for example) regedit /e directly.
-   \item The batch file should explicitly 'exit 0' on successful completion.  
-   \item The path to the batch file should be specified in Unix form:  
-   
-      ClientRunBeforeJob = "c:/bacula/bin/systemstate.bat"  
-   
-   rather than DOS/Windows form:  
-   
+   \item The batch file should explicitly 'exit 0' on successful completion.
+   \item The path to the batch file should be specified in Unix form:
+
+      ClientRunBeforeJob = "c:/bacula/bin/systemstate.bat"
+
+   rather than DOS/Windows form:
+
    ClientRunBeforeJob =
 
 "c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}systemstate.bat"
-   INCORRECT 
+   INCORRECT
    \end{enumerate}
 
-For Win32, please note that there are certain limitations:  
+For Win32, please note that there are certain limitations:
 
 ClientRunBeforeJob = "C:/Program Files/Bacula/bin/pre-exec.bat"
 
@@ -1310,84 +1392,85 @@ backslash (\textbackslash{}) before each double quote ("), and
 then put quotes around the whole thing when putting it in
 the director's .conf file.  You either need to have only one set of quotes
 or else use the short name and don't put quotes around the command path.
+
 Below is the output from cmd's help as it relates to the command line
 passed to the /c option.
+
+
  If /C or /K is specified, then the remainder of the command line after
  the switch is processed as a command line, where the following logic is
  used to process quote (") characters:
+
 \begin{enumerate}
-\item 
+\item
      If all of the following conditions are met, then quote characters
          on the command line are preserved:
-    \begin{itemize}
+    \begin{bsysitemize}
        \item no /S switch.
        \item exactly two quote characters.
        \item no special characters between the two quote characters,
-           where special is one of: 
-\begin{verbatim}
-&<>()@^| 
-\end{verbatim}
+           where special is one of:
+\begin{lstlisting}
+&<>()@^|
+\end{lstlisting}
        \item there are one or more whitespace characters between the
            the two quote characters.
        \item the string between the two quote characters is the name
            of an executable file.
-    \end{itemize}
+    \end{bsysitemize}
+
 \item  Otherwise, old behavior is to see if the first character is
          a quote character and if so, strip the leading character and
          remove the last quote character on the command line, preserving
-         any text after the last quote character. 
-   
+         any text after the last quote character.
+
 \end{enumerate}
 
-   
-The following example of the use of the Client Run Before Job directive was 
+
+The following example of the use of the Client Run Before Job directive was
 submitted by a user:\\
 You could write a shell script to back up a DB2 database to a FIFO. The shell
 script is:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
  #!/bin/sh
  # ===== backupdb.sh
  DIR=/u01/mercuryd
+
  mkfifo $DIR/dbpipe
  db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING &
  sleep 1
-\end{verbatim}
+\end{lstlisting}
 \normalsize
+
 The following line in the Job resource in the bacula-dir.conf file:
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
  Client Run Before Job = "su - mercuryd -c \"/u01/mercuryd/backupdb.sh '%t'
 '%l'\""
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
 When the job is run, you will get messages from the output of the script
 stating that the backup has started. Even though the command being run is
-backgrounded with \&, the job will block until the "db2 BACKUP DATABASE"
+backgrounded with \&, the job will block until the ``db2 BACKUP DATABASE''
 command, thus the backup stalls.
-To remedy this situation, the "db2 BACKUP DATABASE" line should be changed to
+
+To remedy this situation, the ``db2 BACKUP DATABASE'' line should be changed to
 the following:
+
 \footnotesize
-\begin{verbatim} 
+\begin{lstlisting}
  db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING > $DIR/backup.log
 2>&1 < /dev/null &
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
 It is important to redirect the input and outputs of a backgrounded command to
 /dev/null to prevent the script from blocking.
 
+\label{Director:Job:RunBeforeJob}
 \item [Run Before Job = \lt{}command\gt{}]
 \index[dir]{Run Before Job}
 \index[dir]{Directive!Run Before Job}
@@ -1397,17 +1480,17 @@ current Job.  This directive is not required, but if it is defined, and if the
 exit code of the program run is non-zero, the current Bacula job will be
 canceled.
 
-\begin{verbatim}
+\begin{lstlisting}
 Run Before Job = "echo test"
-\end{verbatim}
+\end{lstlisting}
    it's equivalent to :
-\begin{verbatim}
+\begin{lstlisting}
 RunScript {
  Command = "echo test"
  RunsOnClient = No
  RunsWhen = Before
 }
-\end{verbatim} 
+\end{lstlisting}
 
    Lutz Kittler has pointed out that using the RunBeforeJob directive can be a
    simple way to modify your schedules during a holiday.  For example, suppose
@@ -1418,6 +1501,7 @@ RunScript {
    Thursday job will not run, and on Friday the tape you inserted on Wednesday
    before leaving will be used.
 
+\label{Director:Job:RunAfterJob}
 \item [Run After Job = \lt{}command\gt{}]
 \index[dir]{Run After Job}
 \index[dir]{Directive!Run After Job}
@@ -1427,14 +1511,15 @@ RunScript {
    non-zero, Bacula will print a warning message.  Before submitting the
    specified command to the operating system, Bacula performs character
    substitution as described above for the {\bf RunScript} directive.
-   
-   An example of the use of this directive is given in the  
-   \ilink{Tips Chapter}{JobNotification} of this manual.  
+
+   An example of the use of this directive is given in the
+   \bsysxrlink{Tips}{JobNotification}{problems}{chapter} of the \problemsman{}.
 
    See the {\bf Run After Failed Job} if you
    want to run a script after the job has terminated with any
    non-normal status.
 
+\label{Director:Job:RunAfterJob}
 \item [Run After Failed Job = \lt{}command\gt{}]
 \index[dir]{Run After Job}
 \index[dir]{Directive!Run After Job}
@@ -1446,7 +1531,7 @@ RunScript {
    operating system, Bacula performs character substitution as described above
    for the {\bf RunScript} directive. Note, if you wish that your script
    will run regardless of the exit status of the Job, you can use this :
-\begin{verbatim}
+\begin{lstlisting}
 RunScript {
  Command = "echo test"
  RunsWhen = After
@@ -1454,12 +1539,13 @@ RunScript {
  RunsOnClient  = no
  RunsOnSuccess = yes    # default, you can drop this line
 }
-\end{verbatim}
+\end{lstlisting}
 
-   An example of the use of this directive is given in the  
-   \ilink{Tips Chapter}{JobNotification} of this manual.
-  
+   An example of the use of this directive is given in the
+   \bsysxrlink{Tips}{JobNotification}{problems}{chapter} of the \problemsman{}.
 
+
+\label{Director:Job:ClientRunBeforeJob}
 \item [Client Run Before Job = \lt{}command\gt{}]
 \index[dir]{Client Run Before Job}
 \index[dir]{Directive!Client Run Before Job}
@@ -1467,6 +1553,7 @@ RunScript {
    program is run on the client machine.  The same restrictions apply to
    Unix systems as noted above for the {\bf RunScript}.
 
+   \label{Director:Job:ClientRunAfterJob}
 \item [Client Run After Job = \lt{}command\gt{}]
    \index[dir]{Client Run After Job}
    \index[dir]{Directive!Client Run After Job}
@@ -1474,9 +1561,10 @@ RunScript {
    as data spooling is complete in order to allow restarting applications
    on the client as soon as possible. .
 
-   Note, please see the notes above in {\bf RunScript} 
+   Note, please see the notes above in {\bf RunScript}
    concerning Windows clients.
 
+   \label{Director:Job:RerunFailedLevels}
 \item [Rerun Failed Levels = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Rerun Failed Levels}
    \index[dir]{Directive!Rerun Failed Levels}
@@ -1491,25 +1579,42 @@ RunScript {
    directive: first, a failed job is defined as one that has not terminated
    normally, which includes any running job of the same name (you need to
    ensure that two jobs of the same name do not run simultaneously);
-   secondly, the {\bf Ignore FileSet Changes} directive is not considered 
+   secondly, the {\bf Ignore FileSet Changes} directive is not considered
    when checking for failed levels, which means that any FileSet change will
    trigger a rerun.
 
+   \label{Director:Job:SpoolData}
 \item [Spool Data = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Spool Data}
    \index[dir]{Directive!Spool Data}
 
    If this directive is set  to {\bf yes} (default no), the Storage daemon will
-   be requested  to spool the data for this Job to disk rather than write it 
-   directly to tape. Once all the data arrives or the spool files' maximum sizes
-   are reached, the data will be despooled and written  to tape. Spooling data 
-   prevents tape  shoe-shine (start and stop) during
-   Incremental saves. If you are writing to a disk file using this option
-   will probably just slow down the backup jobs.
+   be requested  to spool the data for this Job to disk rather than write it
+   directly to the Volume (normally a tape).
+
+   Thus the data is written in large blocks to the Volume rather than small
+   blocks.  This directive is particularly useful when running multiple
+   simultaneous backups to tape.  Once all the data arrives or the spool
+   files' maximum sizes are reached, the data will be despooled and written
+   to tape.
+
+   Spooling data prevents interleaving date from several job and reduces or
+   eliminates tape drive stop and start commonly known as ``shoe-shine''.
+
+   We don't recommend using this option if you are writing to a disk file
+   using this option will probably just slow down the backup jobs.
 
    NOTE: When this directive is set to yes, Spool Attributes is also
    automatically set to yes.
 
+   \label{Director:Job:SpoolData}
+\item [SpoolData=yes\vb{}no]
+   \index[dir]{SpoolData}
+   \index[dir]{Directive!SpoolData}
+   tells Bacula to request the Storage  daemon to spool data to a disk file
+   before writing it to the Volume (normally a tape).
+
+   \label{Director:Job:SpoolAttributes}
 \item [Spool Attributes = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Spool Attributes}
    \index[dir]{Directive!Spool Attributes}
@@ -1529,6 +1634,17 @@ RunScript {
    NOTE: When Spool Data is set to yes, Spool Attributes is also
    automatically set to yes.
 
+   \label{Director:Job:SpoolSize}
+\item [SpoolSize={\it bytes}]
+   \index[dir]{SpoolSize}
+   \index[dir]{Directive!SpoolSize}
+   where the bytes specify the maximum spool size for this job.
+   The default is take from Device Maximum Spool Size limit.
+   This directive is available only in Bacula version 2.3.5 or
+   later.
+
+
+   \label{Director:Job:Where}
 \item [Where = \lt{}directory\gt{}]
    \index[dir]{Where}
    \index[dir]{Directive!Where}
@@ -1541,14 +1657,16 @@ RunScript {
    /tmp/bacula-restores}.  This is to prevent accidental overwriting of
    your files.
 
-\item [Add Prefix = \lt{}directory\gt{}]
   \label{confaddprefix}
+  \label{Director:Job:AddPrefix}
+\item [Add Prefix = \lt{}directory\gt{}]
   \index[dir]{AddPrefix}
   \index[dir]{Directive!AddPrefix}
   This directive applies only to a Restore job and specifies a prefix to the
   directory name of all files being restored.  This will use \ilink{File
-  Relocation}{filerelocation} feature implemented in Bacula 2.1.8 or later.  
+  Relocation}{filerelocation} feature implemented in Bacula 2.1.8 or later.
 
+  \label{Director:Job:AddSuffix}
 \item [Add Suffix = \lt{}extention\gt{}]
   \index[dir]{AddSuffix}
   \index[dir]{Directive!AddSuffix}
@@ -1559,12 +1677,13 @@ RunScript {
   Using \texttt{Add Suffix=.old}, \texttt{/etc/passwd} will be restored to
   \texttt{/etc/passwsd.old}
 
+  \label{Director:Job:StripPrefix}
 \item [Strip Prefix = \lt{}directory\gt{}]
   \index[dir]{StripPrefix}
   \index[dir]{Directive!StripPrefix}
   This directive applies only to a Restore job and specifies a prefix to remove
   from the directory name of all files being restored.  This will use the
-  \ilink{File Relocation}{filerelocation} feature implemented in Bacula 2.1.8 
+  \ilink{File Relocation}{filerelocation} feature implemented in Bacula 2.1.8
   or later.
 
   Using \texttt{Strip Prefix=/etc}, \texttt{/etc/passwd} will be restored to
@@ -1573,11 +1692,12 @@ RunScript {
   Under Windows, if you want to restore \texttt{c:/files} to \texttt{d:/files},
   you can use :
 
-\begin{verbatim}
+\begin{lstlisting}
  Strip Prefix = c:
  Add Prefix = d:
-\end{verbatim}
+\end{lstlisting}
 
+  \label{Director:Job:RegexWhere}
 \item [RegexWhere = \lt{}expressions\gt{}]
   \index[dir]{RegexWhere}
   \index[dir]{Directive!RegexWhere}
@@ -1588,6 +1708,7 @@ RunScript {
   For more informations about how use this option, see
   \ilink{this}{useregexwhere}.
 
+   \label{Director:Job:Replace}
 \item [Replace = \lt{}replace-option\gt{}]
    \index[dir]{Replace}
    \index[dir]{Directive!Replace}
@@ -1614,9 +1735,10 @@ RunScript {
 
 \item [never]
    \index[dir]{never}
-  if the backed up file already exists, Bacula skips  restoring this file.  
+  if the backed up file already exists, Bacula skips  restoring this file.
 \end{description}
 
+   \label{Director:Job:PrefixLinks}
 \item [Prefix Links=\lt{}yes\vb{}no\gt{}]
    \index[dir]{Prefix Links}
    \index[dir]{Directive!Prefix Links}
@@ -1628,6 +1750,7 @@ RunScript {
    consistent.  However, if you wish to later move the files to their
    original locations, all files linked with absolute names will be broken.
 
+   \label{Director:Job:MaximumConcurrentJobs}
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
    \index[dir]{Maximum Concurrent Jobs}
    \index[dir]{Directive!Maximum Concurrent Jobs}
@@ -1641,6 +1764,7 @@ RunScript {
    documented under \ilink{ Maximum Concurrent Jobs}{DirMaxConJobs} in the
    Director's resource.
 
+   \label{Director:Job:RescheduleOnError}
 \item [Reschedule On Error = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Reschedule On Error}
    \index[dir]{Directive!Reschedule On Error}
@@ -1653,6 +1777,7 @@ RunScript {
    This specification can be useful for portables, laptops, or other
    machines that are not always connected to the network or switched on.
 
+   \label{Director:Job:RescheduleInterval}
 \item [Reschedule Interval = \lt{}time-specification\gt{}]
    \index[dir]{Reschedule Interval}
    \index[dir]{Directive!Reschedule Interval}
@@ -1661,8 +1786,10 @@ RunScript {
    specified by {\bf time-specification}.  See \ilink{the time
    specification formats}{Time} in the Configure chapter for details of
    time specifications.  If no interval is specified, the job will not be
-   rescheduled on error.
+   rescheduled on error. The default Reschedule Interval
+   is 30 minutes (1800 seconds).
 
+   \label{Director:Job:RescheduleTimes}
 \item [Reschedule Times = \lt{}count\gt{}]
    \index[dir]{Reschedule Times}
    \index[dir]{Directive!Reschedule Times}
@@ -1670,15 +1797,11 @@ RunScript {
    job.  If it is set to zero (the default) the job will be rescheduled an
    indefinite number of times.
 
+\label{Director:Job:AllowDuplicateJobs}
 \item [Allow Duplicate Jobs = \lt{}yes\vb{}no\gt{}]
 \index[general]{Allow Duplicate Jobs}
 
-\begin{figure}[htbp]
-  \centering
-  \includegraphics[width=13cm]{\idir duplicate-real.eps}
-  \caption{Allow Duplicate Jobs usage}
-  \label{fig:allowduplicatejobs}
-\end{figure}
+\bsysimageH{duplicate-real}{Allow Duplicate Jobs usage}{fig:allowduplicatejobs}
 
 A duplicate job in the sense we use it here means a second or subsequent job
 with the same name starts.  This happens most frequently when the first job
@@ -1688,12 +1811,13 @@ runs longer than expected because no tapes are available.
   the directive is set to {\bf no} (default) then only one job of a given name
   may run at one time, and the action that Bacula takes to ensure only
   one job runs is determined by the other directives (see below).
+
   If {\bf Allow Duplicate Jobs} is set to {\bf no} and two jobs
   are present and none of the three directives given below permit
   cancelling a job, then the current job (the second one started)
   will be cancelled.
 
+\label{Job:AllowHigherDuplicates}
 \item [Allow Higher Duplicates = \lt{}yes\vb{}no\gt{}]
 \index[general]{Allow Higher Duplicates}
   This directive was implemented in version 5.0.0, but does not work
@@ -1701,9 +1825,10 @@ runs longer than expected because no tapes are available.
   of Bacula the directive is disabled (disregarded).
 
 
+\label{Director:Job:CancelLowerLevelDuplicates}
 \item [Cancel Lower Level Duplicates = \lt{}yes\vb{}no\gt{}]
 \index[general]{Cancel Lower Level Duplicates}
-  If \textbf{Allow Duplicates Jobs} is set to \textbf{no} and this
+  If \textbf{Allow Duplicate Jobs} is set to \textbf{no} and this
   directive is set to \textbf{yes}, Bacula will choose between duplicated
   jobs the one with the highest level.  For example, it will cancel a
   previous Incremental to run a Full backup.  It works only for Backup
@@ -1711,13 +1836,15 @@ runs longer than expected because no tapes are available.
   jobs are the same, nothing is done and the other
   Cancel XXX Duplicate directives will be examined.
 
+\label{Director:Job:CancelQueuedDuplicates}
 \item [Cancel Queued Duplicates = \lt{}yes\vb{}no\gt{}]
 \index[general]{Cancel Queued Duplicates}
   If {\bf Allow Duplicate Jobs} is set to {\bf no} and
   if this directive is set to {\bf yes} any job that is
   already queued to run but not yet running will be canceled.
-  The default is {\bf no}. 
+  The default is {\bf no}.
 
+\label{Director:Job:CancelRunningDuplicates}
 \item[Cancel Running Duplicates = \lt{}yes\vb{}no\gt{}]
 \index[general]{Cancel Running Duplicates}
   If {\bf Allow Duplicate Jobs} is set to {\bf no} and
@@ -1731,11 +1858,12 @@ runs longer than expected because no tapes are available.
 %%  If the first one is running for long time, this is probably not a good
 %%  idea to cancel it.
 
+   \label{Director:Job:Run}
 \item [Run = \lt{}job-name\gt{}]
    \index[dir]{Run}
    \index[dir]{Directive!Run}
    \index[dir]{Clone a Job}
-   The Run directive (not to be confused with the Run option in a 
+   The Run directive (not to be confused with the Run option in a
    Schedule) allows you to start other jobs or to clone jobs. By using the
    cloning keywords (see below), you can backup
    the same data (or almost the same data) to two or more drives
@@ -1746,18 +1874,18 @@ runs longer than expected because no tapes are available.
    The part after the equal sign must be enclosed in double quotes,
    and can contain any string or set of options (overrides) that you
    can specify when entering the Run command from the console. For
-   example {\bf storage=DDS-4 ...}.  In addition, there are two special
+   example {\bf storage=DDS-4 \ldots{}}.  In addition, there are two special
    keywords that permit you to clone the current job. They are {\bf level=\%l}
-   and {\bf since=\%s}. The \%l in the level keyword permits 
+   and {\bf since=\%s}. The \%l in the level keyword permits
    entering the actual level of the current job and the \%s in the since
    keyword permits putting the same time for comparison as used on the
    current job.  Note, in the case of the since keyword, the \%s must be
    enclosed in double quotes, and thus they must be preceded by a backslash
    since they are already inside quotes. For example:
 
-\begin{verbatim}
+\begin{lstlisting}
    run = "Nightly-backup level=%l since=\"%s\" storage=DDS-4"
-\end{verbatim}
+\end{lstlisting}
 
    A cloned job will not start additional clones, so it is not
    possible to recurse.
@@ -1773,8 +1901,9 @@ runs longer than expected because no tapes are available.
    If you are trying to prioritize jobs by using the clone feature (Run
    directive), you will find it much easier to do using a RunScript
    resource, or a RunBeforeJob directive.
-
 \label{Priority}
+
+   \label{Director:Job:Priority}
 \item [Priority = \lt{}number\gt{}]
    \index[dir]{Priority}
    \index[dir]{Directive!Priority}
@@ -1790,14 +1919,14 @@ runs longer than expected because no tapes are available.
    running priority 2 jobs must complete before the priority 1 job is
    run, unless Allow Mixed Priority is set.
 
-   The default priority is 10.  
+   The default priority is 10.
 
    If you want to run concurrent jobs you should
    keep these points in mind:
 
-\begin{itemize}
-\item See \ilink{Running Concurrent Jobs}{ConcurrentJobs} on how to setup
-   concurrent jobs.
+\begin{bsysitemize}
+\item See \bsysxrlink{Running Concurrent Jobs}{ConcurrentJobs}{problems}{section} on how to setup
+   concurrent jobs in the \problemsman{}.
 
 \item Bacula concurrently runs jobs of only one priority at a time.  It
    will not simultaneously run a priority 1 and a priority 2 job.
@@ -1816,7 +1945,7 @@ runs longer than expected because no tapes are available.
    start even if the Maximum Concurrent Jobs settings would normally allow
    them to run.  This ensures that higher priority jobs will be run as soon
    as possible.
-\end{itemize}
+\end{bsysitemize}
 
 If you have several jobs of different priority, it may not best to start
 them at exactly the same time, because Bacula must examine them one at a
@@ -1825,8 +1954,9 @@ before your high priority jobs.  If you experience this problem, you may
 avoid it by starting any higher priority jobs a few seconds before lower
 priority ones.  This insures that Bacula will examine the jobs in the
 correct order, and that your priority scheme will be respected.
-
 \label{AllowMixedPriority}
+
+\label{Director:Job:AllowMixedPriority}
 \item [Allow Mixed Priority = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Allow Mixed Priority}
    This directive is only implemented in version 2.5 and later.  When
@@ -1842,14 +1972,15 @@ correct order, and that your priority scheme will be respected.
    priority 5 is added to the queue, it will be run as soon as one of
    the running jobs finishes.  However, new priority 10 jobs will not
    be run until the priority 5 job has finished.
-
 \label{WritePartAfterJob}
+
+\label{Director:Job:WritePartAfterJob}
 \item [Write Part After Job = \lt{}yes\vb{}no\gt{}]
 \index[dir]{Write Part After Job}
 \index[dir]{Directive!Write Part After Job}
    This directive is only implemented in version 1.37 and later.
    If this directive is set to {\bf yes} (default {\bf no}), a new part file
-   will be created after the job is finished.  
+   will be created after the job is finished.
 
    It should be set to {\bf yes} when writing to devices that require mount
    (for example DVD), so you are sure that the current part, containing
@@ -1861,14 +1992,14 @@ correct order, and that your priority scheme will be respected.
    wasting too much space, but to ensure that the data is written to the
    medium when all jobs are finished.
 
-   This directive is ignored with tape and FIFO devices.  
+   This directive is ignored with tape and FIFO devices.
 
 \end{description}
 
-The following is an example of a valid Job resource definition: 
+The following is an example of a valid Job resource definition:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Job {
   Name = "Minou"
   Type = Backup
@@ -1880,11 +2011,11 @@ Job {
   Schedule = "MinouWeeklyCycle"
   Messages = Standard
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-\section{The JobDefs Resource}
 \label{JobDefsResource}
+\section{The JobDefs Resource}
 \index[general]{JobDefs Resource}
 \index[general]{Resource!JobDefs}
 
@@ -1893,17 +2024,17 @@ resource. However, a JobDefs resource does not create a Job, rather it can be
 referenced within a Job to provide defaults for that Job. This permits you to
 concisely define several nearly identical Jobs, each one referencing a JobDefs
 resource which contains the defaults. Only the changes from the defaults need to
-be mentioned in each Job. 
+be mentioned in each Job.
 
-\section{The Schedule Resource}
 \label{ScheduleResource}
+\section{The Schedule Resource}
 \index[general]{Resource!Schedule}
 \index[general]{Schedule Resource}
 
 The Schedule resource provides a means of automatically scheduling a Job as
 well as the ability to override the default Level, Pool, Storage and Messages
 resources. If a Schedule resource is not referenced in a Job, the Job can only
-be run manually. In general, you specify an action to be taken and when. 
+be run manually. In general, you specify an action to be taken and when.
 
 \begin{description}
 
@@ -1914,11 +2045,13 @@ be run manually. In general, you specify an action to be taken and when.
    required, but you will need at least one if you want Jobs to be
    automatically started.
 
+   \label{Director:Schedule:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
-   The name of the schedule being defined.  The Name directive is required. 
+   The name of the schedule being defined.  The Name directive is required.
 
+   \label{Director:Schedule:Run}
 \item [Run = \lt{}Job-overrides\gt{} \lt{}Date-time-specification\gt{}]
    \index[dir]{Run}
    \index[dir]{Directive!Run}
@@ -1948,69 +2081,53 @@ be run manually. In general, you specify an action to be taken and when.
    Job-overrides} on one {\bf Run} directive by separating them with one or
    more spaces or by separating them with a trailing comma.  For example:
 
+   \label{Director:Schedule:End}
 \begin{description}
 
 \item [Level=Full]
    \index[dir]{Level}
    \index[dir]{Directive!Level}
-   is all files in the FileSet whether or not  they have changed.  
+   is all files in the FileSet whether or not  they have changed.
 
 \item [Level=Incremental]
    \index[dir]{Level}
    \index[dir]{Directive!Level}
-   is all files that have changed since  the last backup.  
+   is all files that have changed since  the last backup.
 
 \item [Pool=Weekly]
    \index[dir]{Pool}
    \index[dir]{Directive!Pool}
-   specifies to use the Pool named {\bf Weekly}.  
+   specifies to use the Pool named {\bf Weekly}.
 
 \item [Storage=DLT\_Drive]
    \index[dir]{Storage}
    \index[dir]{Directive!Storage}
-   specifies to use {\bf DLT\_Drive} for  the storage device.  
+   specifies to use {\bf DLT\_Drive} for  the storage device.
 
 \item [Messages=Verbose]
    \index[dir]{Messages}
    \index[dir]{Directive!Messages}
-   specifies to use the {\bf Verbose}  message resource for the Job.  
+   specifies to use the {\bf Verbose}  message resource for the Job.
 
 \item [FullPool=Full]
    \index[dir]{FullPool}
    \index[dir]{Directive!FullPool}
    specifies to use the Pool named {\bf Full}  if the job is a full backup, or
 is
-upgraded from another type  to a full backup.  
+upgraded from another type  to a full backup.
 
 \item [DifferentialPool=Differential]
    \index[dir]{DifferentialPool}
    \index[dir]{Directive!DifferentialPool}
    specifies to use the Pool named {\bf Differential} if the job is a
-   differential  backup.  
+   differential  backup.
 
 \item [IncrementalPool=Incremental]
    \index[dir]{IncrementalPool}
    \index[dir]{Directive!IncrementalPool}
    specifies to use the Pool  named {\bf Incremental} if the job is an
-incremental  backup.  
+incremental  backup.
 
-\item [SpoolData=yes\vb{}no]
-   \index[dir]{SpoolData}
-   \index[dir]{Directive!SpoolData}
-   tells Bacula to request the Storage  daemon to spool data to a disk file
-   before writing it to the Volume (normally a tape). Thus the data is
-   written in large blocks to the Volume rather than small blocks. This
-   directive is particularly useful when running multiple simultaneous
-   backups to tape. It prevents interleaving of the job data and reduces
-   or eliminates tape drive stop and start commonly known as "shoe-shine".
-
-\item [SpoolSize={\it bytes}]
-   \index[dir]{SpoolSize}
-   \index[dir]{Directive!SpoolSize}
-   where the bytes specify the maximum spool size for this job.
-   The default is take from Device Maximum Spool Size limit. 
-   This directive is available only in Bacula version 2.3.5 or 
-   later.
 
 \item [WritePartAfterJob=yes\vb{}no]
    \index[dir]{WritePartAfterJob}
@@ -2034,30 +2151,30 @@ be repetitive in nature and  will serve to override or limit the default
 repetition. This  is done by specifying masks or times for the hour, day of the
 month, day of the week, week of the month, week of the year,  and month when
 you want the job to run. By specifying one or  more of the above, you can
-define a schedule to repeat at  almost any frequency you want.  
+define a schedule to repeat at  almost any frequency you want.
 
 Basically, you must supply a {\bf month}, {\bf day}, {\bf hour}, and  {\bf
 minute} the Job is to be run. Of these four items to be specified,  {\bf day}
 is special in that you may either specify a day of the month  such as 1, 2,
-... 31, or you may specify a day of the week such  as Monday, Tuesday, ...
+\ldots{} 31, or you may specify a day of the week such  as Monday, Tuesday, \ldots{}
 Sunday. Finally, you may also specify a  week qualifier to restrict the
-schedule to the first, second, third,  fourth, or fifth week of the month.  
+schedule to the first, second, third,  fourth, or fifth week of the month.
 
 For example, if you specify only a day of the week, such as {\bf Tuesday}  the
 Job will be run every hour of every Tuesday of every Month. That  is the {\bf
 month} and {\bf hour} remain set to the defaults of  every month and all
-hours.  
+hours.
 
 Note, by default with no other specification, your job will run  at the
 beginning of every hour. If you wish your job to run more than  once in any
 given hour, you will need to specify multiple {\bf run}  specifications each
-with a different minute.  
+with a different minute.
 
 The date/time to run the Job can be specified in the following way  in
-pseudo-BNF:  
+pseudo-BNF:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 <void-keyword>    = on
 <at-keyword>      = at
 <week-keyword>    = 1st | 2nd | 3rd | 4th | 5th | first |
@@ -2100,7 +2217,7 @@ pseudo-BNF:
 <month-spec>      = <month-keyword> | <month-range> |
                     <monthly-keyword>
 <date-time-spec>  = <month-spec> <day-spec> <time-spec>
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
 \end{description}
@@ -2111,7 +2228,7 @@ of the year occurs, or alternatively, the week which contains the 4th of
 January. Weeks are numbered w01 to w53. w00 for Bacula is the week that
 precedes the first ISO week (i.e. has the first few days of the year if any
 occur before Thursday). w00 is not defined by the ISO specification. A week
-starts with Monday and ends with Sunday. 
+starts with Monday and ends with Sunday.
 
 According to the NIST (US National Institute of Standards and Technology),
 12am and 12pm are ambiguous and can be defined to anything.  However,
@@ -2122,47 +2239,47 @@ am/pm). This is the definition in Bacula version 2.0.3 and later.
 
 An example schedule resource that is named {\bf WeeklyCycle} and runs a job
 with level full each Sunday at 2:05am and an incremental job Monday through
-Saturday at 2:05am is: 
+Saturday at 2:05am is:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Schedule {
   Name = "WeeklyCycle"
   Run = Level=Full sun at 2:05
   Run = Level=Incremental mon-sat at 2:05
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-An example of a possible monthly cycle is as follows: 
+An example of a possible monthly cycle is as follows:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Schedule {
   Name = "MonthlyCycle"
   Run = Level=Full Pool=Monthly 1st sun at 2:05
   Run = Level=Differential 2nd-5th sun at 2:05
   Run = Level=Incremental Pool=Daily mon-sat at 2:05
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-The first of every month: 
+The first of every month:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Schedule {
   Name = "First"
   Run = Level=Full on 1 at 2:05
   Run = Level=Incremental on 2-31 at 2:05
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-Every 10 minutes: 
+Every 10 minutes:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Schedule {
   Name = "TenMinutes"
   Run = Level=Full hourly at 0:05
@@ -2172,7 +2289,7 @@ Schedule {
   Run = Level=Full hourly at 0:45
   Run = Level=Full hourly at 0:55
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
 \section{Technical Notes on Schedules}
@@ -2191,36 +2308,39 @@ Bacula checks the masks to see if the bits are set corresponding to the
 current time, your job will run only in the two months you have set. Likewise,
 if you set a time (hour), the hour mask will be cleared, and the hour you
 specify will be set in the bit mask and the minutes will be stored in the
-minute field. 
+minute field.
 
 For any schedule you have defined, you can see how these bits are set by doing
 a {\bf show schedules} command in the Console program. Please note that the
-bit mask is zero based, and Sunday is the first day of the week (bit zero). 
+bit mask is zero based, and Sunday is the first day of the week (bit zero).
 
 \input{fileset}
+\input{bsplugins}
 
+\label{ClientResource}
 \section{The Client Resource}
-\label{ClientResource2}
 \index[general]{Resource!Client}
 \index[general]{Client Resource}
 
 The Client resource defines the attributes of the Clients that are served by
 this Director; that is the machines that are to be backed up. You will need
-one Client resource definition for each machine to be backed up. 
+one Client resource definition for each machine to be backed up.
 
 \begin{description}
 
 \item [Client (or FileDaemon)]
    \index[dir]{Client (or FileDaemon)}
    \index[dir]{Directive!Client (or FileDaemon)}
-   Start of the Client directives.  
+   Start of the Client directives.
 
+   \label{Director:Client:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
    The client name which will be used in the  Job resource directive or in the
-console run command.  This directive is required.  
+console run command.  This directive is required.
 
+   \label{Director:Client:Address}
 \item [Address = \lt{}address\gt{}]
    \index[dir]{Address}
    \index[dir]{Directive!FD Address}
@@ -2230,35 +2350,39 @@ console run command.  This directive is required.
    network address in dotted quad notation for a Bacula File server daemon.
    This directive is required.
 
+   \label{Director:Client:FdPort}
 \item [FD Port = \lt{}port-number\gt{}]
    \index[dir]{FD Port}
    \index[dir]{Directive!FD Port}
    Where the port is a port  number at which the Bacula File server daemon can
-   be contacted.  The default is 9102. 
+   be contacted.  The default is 9102.
 
+   \label{Director:Client:Catalog}
 \item [Catalog = \lt{}Catalog-resource-name\gt{}]
    \index[dir]{Catalog}
    \index[dir]{Directive!Catalog}
-   This specifies the  name of the catalog resource to be used for this Client. 
-   This directive is required.  
+   This specifies the  name of the catalog resource to be used for this Client.
+   This directive is required.
 
+   \label{Director:Client:Password}
 \item [Password = \lt{}password\gt{}]
    \index[dir]{Password}
    \index[dir]{Directive!Password}
    This is the password to be  used when establishing a connection with the File
    services, so  the Client configuration file on the machine to be backed up
-   must  have the same password defined for this Director. This directive is 
+   must  have the same password defined for this Director. This directive is
    required.  If you have either {\bf /dev/random}  {\bf bc} on your machine,
    Bacula will generate a random  password during the configuration process,
-   otherwise it will  be left blank. 
+   otherwise it will  be left blank.
 
    The password is plain text.  It is not generated through any special
    process, but it is preferable for security reasons to make the text
    random.
-
 \label{FileRetention}
-\item [File Retention = \lt{}time-period-specification\gt{}]
+
    \label{FileRetention}
+   \label{Director:Client:FileRetention}
+\item [File Retention = \lt{}time-period-specification\gt{}]
    \index[dir]{File Retention}
    \index[dir]{Directive!File Retention}
    The File Retention directive defines the length of time that  Bacula will
@@ -2268,21 +2392,21 @@ console run command.  This directive is required.
    {\bf AutoPrune} is set to  {\bf yes} Bacula will prune (remove) File records
    that  are older than the specified File Retention period. Note, this  affects
    only records in the catalog database. It does not  affect your archive
-   backups.  
+   backups.
 
    File records  may actually be retained for a shorter period than you specify
    on  this directive if you specify either a shorter {\bf Job Retention}  or a
    shorter {\bf Volume Retention} period. The shortest  retention period of the
-   three takes precedence.  The time may be expressed in seconds, minutes, 
-   hours, days, weeks, months, quarters, or years. See the 
+   three takes precedence.  The time may be expressed in seconds, minutes,
+   hours, days, weeks, months, quarters, or years. See the
    \ilink{ Configuration chapter}{Time} of this  manual for
-   additional details of time specification. 
+   additional details of time specification.
 
-   The  default is 60 days. 
+   The  default is 60 days.
 
-\label{JobRetention}
-\item [Job Retention = \lt{}time-period-specification\gt{}]
    \label{JobRetention}
+   \label{Director:Client:JobRetention}
+\item [Job Retention = \lt{}time-period-specification\gt{}]
    \index[dir]{Job Retention}
    \index[dir]{Directive!Job Retention}
    The Job Retention directive defines the length of time that  Bacula will keep
@@ -2302,13 +2426,14 @@ console run command.  This directive is required.
    independently applied, so the smaller of the two takes precedence.
 
    The Job retention period is specified as seconds,  minutes, hours, days,
-   weeks, months,  quarters, or years.  See the 
+   weeks, months,  quarters, or years.  See the
    \ilink{ Configuration chapter}{Time} of this manual for
-   additional details of  time specification.  
-
-   The default is 180 days.  
+   additional details of  time specification.
 
+   The default is 180 days.
 \label{AutoPrune}
+
+   \label{Director:Client:AutoPrune}
 \item [AutoPrune = \lt{}yes\vb{}no\gt{}]
    \index[dir]{AutoPrune}
    \index[dir]{Directive!AutoPrune}
@@ -2316,9 +2441,10 @@ console run command.  This directive is required.
    will  automatically apply the File retention period and the Job  retention
    period for the Client at the end of the Job.  If you set {\bf AutoPrune = no},
    pruning will not be done,  and your Catalog will grow in size each time you
-   run a Job.  Pruning affects only information in the catalog and not data 
-   stored in the backup archives (on Volumes).  
+   run a Job.  Pruning affects only information in the catalog and not data
+   stored in the backup archives (on Volumes).
 
+   \label{Director:Client:MaximumConcurrentJobs}
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
    \index[dir]{Maximum Concurrent Jobs}
    \index[dir]{Directive!Maximum Concurrent Jobs}
@@ -2329,43 +2455,59 @@ console run command.  This directive is required.
    Storage resources will also apply in addition to  any limit specified here.
    The  default is set to 1, but you may set it to a larger number.
 
+\label{Director:Client:MaximumBandwidthPerJob}
 \item [Maximum Bandwidth Per Job = \lt{}speed\gt{}]
 \index[dir]{Maximum Bandwidth Per Job}
 \index[dir]{Directive!Maximum Bandwidth Per Job}
 
 The speed parameter specifies the maximum allowed bandwidth that a job may use
 when started for this Client. The speed parameter should be specified in
-k/s, KB/s, m/s or MB/s.
-
+k/s, Kb/s, m/s or Mb/s.
+
+% \item [FD Storage Address = \lt{}address\gt{}]
+%    \index[dir]{FDStorageAddress}
+%    \index[dir]{Directive!FD Storage Address}
+%    \index[dir]{Storage daemon Address}
+%
+%    Where the address is a host name, a {\bf fully qualified domain name}, or an
+%    {\bf IP address}. Please note that the \lt{}address\gt{} as specified here
+%    will be transmitted to the File daemon instead of the Storage
+%    \texttt{Address} who will then use it to contact the Storage daemon. This
+%    directive can be used in NAT environment where the configuration of the
+%    Client resolver is not possible. Note that using this directive will not allow
+%    to use multiple Storage Daemon for Backup/Restore jobs.
+%
+
+   \label{Director:Client:Priority}
 \item [Priority = \lt{}number\gt{}]
    \index[dir]{Priority}
    \index[dir]{Directive!Priority}
    The number specifies the  priority of this client relative to other clients
    that the  Director is processing simultaneously. The priority can range  from
    1 to 1000. The clients are ordered such that the smaller  number priorities
-   are performed first (not currently  implemented). 
+   are performed first (not currently  implemented).
 \end{description}
 
-   The following is an example of a valid Client resource definition: 
+   The following is an example of a valid Client resource definition:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Client {
   Name = Minimatou
   FDAddress = minimatou
   Catalog = MySQL
   Password = very_good
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
+\label{StorageResource}
 \section{The Storage Resource}
-\label{StorageResource2}
 \index[general]{Resource!Storage}
 \index[general]{Storage Resource}
 
 The Storage resource defines which Storage daemons are available for use by
-the Director. 
+the Director.
 
 \begin{description}
 
@@ -2373,14 +2515,16 @@ the Director.
    \index[dir]{Storage}
    \index[dir]{Directive!Storage}
    Start of the Storage resources. At least one  storage resource must be
-   specified. 
+   specified.
 
+   \label{Director:Storage:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
    The name of the storage resource. This  name appears on the Storage directive
-   specified in the Job resource and is required. 
+   specified in the Job resource and is required.
 
+   \label{Director:Storage:Address}
 \item [Address = \lt{}address\gt{}]
    \index[dir]{Address}
    \index[dir]{Directive!SD Address}
@@ -2390,15 +2534,30 @@ the Director.
    will be transmitted to  the File daemon who will then use it to contact the
    Storage daemon. Hence,  it is {\bf not}, a good idea to use {\bf localhost} as
    the  name but rather a fully qualified machine name or an IP address.  This
-   directive is required. 
+   directive is required.
 
+   \label{Director:Storage:FdStorageAddress}
+ \item [FD Storage Address = \lt{}address\gt{}]
+   \index[dir]{FDStorageAddress}
+   \index[dir]{Directive!FD Storage Address} \index[dir]{Storage daemon
+     Address} Where the address is a host name, a {\bf fully qualified domain
+     name}, or an {\bf IP address}. Please note that the \lt{}address\gt{} as
+   specified here will be transmitted to the File daemon instead of the
+   \texttt{Address} who will then use it to contact the Storage daemon. This
+   directive can be used in NAT environment where the configuration of the
+   Client resolver is not possible.
+
+\bsysimageH{BackupOverWan1}{Backup over WAN using FD Storage Address}{figdirdconf:backupwan}
+
+   \label{Director:Storage:SdPort}
 \item [SD Port = \lt{}port\gt{}]
    \index[dir]{SD Port}
    \index[dir]{Directive!SD Port}
    Where port is the port to use to  contact the storage daemon for information
    and to start jobs.  This same port number must appear in the Storage resource
-   of the  Storage daemon's configuration file. The default is 9103. 
+   of the  Storage daemon's configuration file. The default is 9103.
 
+   \label{Director:Storage:Password}
 \item [Password = \lt{}password\gt{}]
    \index[dir]{Password}
    \index[dir]{Directive!Password}
@@ -2407,11 +2566,12 @@ the Director.
    resource of the Storage  daemon's configuration file. This directive is
    required.  If you have either {\bf /dev/random}  {\bf bc} on your machine,
    Bacula will generate a random  password during the configuration process,
-   otherwise it will  be left blank. 
+   otherwise it will  be left blank.
 
    The password is plain text.  It is not generated through any special
    process, but it is preferable for security reasons to use random text.
 
+   \label{Director:Storage:Device}
 \item [Device = \lt{}device-name\gt{}]
    \index[dir]{Device}
    \index[dir]{Directive!Device}
@@ -2430,16 +2590,17 @@ the Director.
    in the Director that point to the same Device in the Storage daemon.
    Doing so may cause the Storage daemon to block (or hang) attempting to
    open the same device that is already open.  This directive is required.
-
 \label{MediaType}
+
+   \label{Director:Storage:MediaType}
 \item [Media Type = \lt{}MediaType\gt{}]
    \index[dir]{Media Type}
    \index[dir]{Directive!Media Type}
    This directive specifies the Media Type to be used to store the data.
    This is an arbitrary string of characters up to 127 maximum that you
    define.  It can be anything you want.  However, it is best to make it
-   descriptive of the storage media (e.g.  File, DAT, "HP DLT8000", 8mm,
-   ...).  In addition, it is essential that you make the {\bf Media Type}
+   descriptive of the storage media (e.g.  File, DAT, ``HP DLT8000'', 8mm,
+   \ldots{}).  In addition, it is essential that you make the {\bf Media Type}
    specification unique for each storage media type.  If you have two DDS-4
    drives that have incompatible formats, or if you have a DDS-4 drive and
    a DDS-4 autochanger, you almost certainly should specify different {\bf
@@ -2457,10 +2618,10 @@ the Director.
    cannot mount a Volume in any directory -- this can be done by creating
    an appropriate soft link.
 
-   Currently Bacula permits only a single Media Type per Storage           
+   Currently Bacula permits only a single Media Type per Storage
    and Device definition. Consequently, if
    you have a drive that supports more than one Media Type, you can
-   give a unique string to Volumes with different intrinsic Media 
+   give a unique string to Volumes with different intrinsic Media
    Type (Media Type = DDS-3-4 for DDS-3 and DDS-4 types), but then
    those volumes will only be mounted on drives indicated with the
    dual type (DDS-3-4).
@@ -2490,9 +2651,10 @@ the Director.
    resource must agree with the value specified in the Device resource in
    the {\bf Storage daemon's} configuration file.  It is also an additional
    check so that you don't try to write data for a DLT onto an 8mm device.
-
 \label{Autochanger1}
-\item [Autochanger = \lt{}yes\vb{}no\gt{}]  
+
+   \label{Director:Storage:Autochanger}
+\item [Autochanger = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Autochanger}
    \index[dir]{Directive!Autochanger}
    If you specify {\bf yes} for this command (the default is {\bf no}),
@@ -2506,7 +2668,7 @@ the Director.
    algorithm used by Bacula to search for available volumes will be
    modified to consider only Volumes that are known to be in the
    autochanger's magazine.  If no {\bf in changer} volume is found, Bacula
-   will attempt recycling, pruning, ..., and if still no volume is found,
+   will attempt recycling, pruning, \ldots{}, and if still no volume is found,
    Bacula will search for any volume whether or not in the magazine.  By
    privileging in changer volumes, this procedure minimizes operator
    intervention.  The default is {\bf no}.
@@ -2518,6 +2680,7 @@ the Director.
    Autochangers}{AutochangersChapter} manual of this chapter for the
    details of using autochangers.
 
+   \label{Director:Storage:MaximumConcurrentJobs}
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
    \index[dir]{Maximum Concurrent Jobs}
    \index[dir]{Directive!Maximum Concurrent Jobs}
@@ -2533,8 +2696,9 @@ the Director.
    turn data spooling on as documented in the \ilink{Data
    Spooling}{SpoolingChapter} chapter of this manual.
 
-\item [AllowCompression = \lt{}yes\vb{}no\gt{}]
   \label{AllowCompression}
+   \label{Director:Storage:AllowCompression}
+\item [AllowCompression = \lt{}yes\vb{}no\gt{}]
    \index[dir]{AllowCompression}
    \index[dir]{Directive!AllowCompression}
 
@@ -2544,6 +2708,7 @@ the Director.
    compression options in FileSets used by jobs which use this storage
    resource.
 
+   \label{Director:Storage:HeartbeatInterval}
 \item [Heartbeat Interval = \lt{}time-interval\gt{}]
    \index[dir]{Heartbeat Interval}
    \index[dir]{Directive!Heartbeat}
@@ -2551,15 +2716,16 @@ the Director.
    set a keepalive interval (heartbeat) in seconds on each of the sockets
    it opens for the Storage resource.  This value will override any
    specified at the Director level.  It is implemented only on systems
-   (Linux, ...) that provide the {\bf setsockopt} TCP\_KEEPIDLE function.
+   (Linux, \ldots{}) that provide the {\bf setsockopt} TCP\_KEEPIDLE function.
    The default value is zero, which means no change is made to the socket.
 
+   \label{Director:Storage:End}
 \end{description}
 
-The following is an example of a valid Storage resource definition: 
+The following is an example of a valid Storage resource definition:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 # Definition of tape storage device
 Storage {
   Name = DLTDrive
@@ -2568,11 +2734,11 @@ Storage {
   Device = "HP DLT 80"    # same as Device in Storage daemon
   Media Type = DLT8000    # same as MediaType in Storage daemon
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-\section{The Pool Resource}
 \label{PoolResource}
+\section{The Pool Resource}
 \index[general]{Resource!Pool}
 \index[general]{Pool Resource}
 
@@ -2582,24 +2748,24 @@ determine which set of Volumes (media) receives the backup data. This permits,
 for example, to store all full backup data on one set of Volumes and all
 incremental backups on another set of Volumes. Alternatively, you could assign
 a different set of Volumes to each machine that you backup. This is most
-easily done by defining multiple Pools. 
+easily done by defining multiple Pools.
 
 Another important aspect of a Pool is that it contains the default attributes
-(Maximum Jobs, Retention Period, Recycle flag, ...) that will be given to a
+(Maximum Jobs, Retention Period, Recycle flag, \ldots{}) that will be given to a
 Volume when it is created. This avoids the need for you to answer a large
 number of questions when labeling a new Volume. Each of these attributes can
 later be changed on a Volume by Volume basis using the {\bf update} command in
 the console program. Note that you must explicitly specify which Pool Bacula
 is to use with each Job. Bacula will not automatically search for the correct
-Pool. 
+Pool.
 
 Most often in Bacula installations all backups for all machines (Clients) go
 to a single set of Volumes. In this case, you will probably only use the {\bf
 Default} Pool. If your backup strategy calls for you to mount a different tape
 each day, you will probably want to define a separate Pool for each day. For
-more information on this subject, please see the 
+more information on this subject, please see the
 \ilink{Backup Strategies}{StrategiesChapter} chapter of this
-manual. 
+manual.
 
 
 To use a Pool, there are three distinct steps. First the Pool must be defined
@@ -2612,12 +2778,12 @@ you can use the {\bf update pool} console command to refresh the database
 image. It is this database image rather than the Director's resource image
 that is used for the default Volume attributes. Note, for the pool to be
 automatically created or updated, it must be explicitly referenced by a Job
-resource. 
+resource.
 
 Next the physical media must be labeled. The labeling can either be done with
 the {\bf label} command in the {\bf console} program or using the {\bf btape}
 program. The preferred method is to use the {\bf label} command in the {\bf
-console} program. 
+console} program.
 
 Finally, you must add Volume names (and their attributes) to the Pool. For
 Volumes to be used by Bacula they must be of the same {\bf Media Type} as the
@@ -2628,24 +2794,24 @@ are backing up to files. When running a Job, you must explicitly specify which
 Pool to use. Bacula will then automatically select the next Volume to use from
 the Pool, but it will ensure that the {\bf Media Type} of any Volume selected
 from the Pool is identical to that required by the Storage resource you have
-specified for the Job. 
+specified for the Job.
 
 If you use the {\bf label} command in the console program to label the
 Volumes, they will automatically be added to the Pool, so this last step is
-not normally required. 
+not normally required.
 
 It is also possible to add Volumes to the database without explicitly labeling
-the physical volume. This is done with the {\bf add} console command. 
+the physical volume. This is done with the {\bf add} console command.
 
 As previously mentioned, each time Bacula starts, it scans all the Pools
 associated with each Catalog, and if the database record does not already
 exist, it will be created from the Pool Resource definition. {\bf Bacula}
 probably should do an {\bf update pool} if you change the Pool definition, but
 currently, you must do this manually using the {\bf update pool} command in
-the Console program. 
+the Console program.
 
 The Pool Resource defined in the Director's configuration file
-(bacula-dir.conf) may contain the following directives: 
+(bacula-dir.conf) may contain the following directives:
 
 \begin{description}
 
@@ -2656,13 +2822,15 @@ The Pool Resource defined in the Director's configuration file
    defined.
 
 
+   \label{Director:Pool:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
    The name of the pool.  For most applications, you will use the default
    pool name {\bf Default}.  This directive is required.
-
 \label{MaxVolumes}
+
+   \label{Director:Pool:MaximumVolumes}
 \item [Maximum Volumes = \lt{}number\gt{}]
    \index[dir]{Maximum Volumes}
    \index[dir]{Directive!Maximum Volumes}
@@ -2673,34 +2841,37 @@ The Pool Resource defined in the Director's configuration file
    Volumes, or for File storage where you wish to ensure that the backups
    made to disk files do not become too numerous or consume too much space.
 
+   \label{Director:Pool:PoolType}
 \item [Pool Type = \lt{}type\gt{}]
    \index[dir]{Pool Type}
    \index[dir]{Directive!Pool Type}
    This directive defines the pool type, which corresponds to the type of
    Job being run.  It is required and may be one of the following:
 
-\begin{itemize}
-  \item [Backup]  
-  \item [*Archive]  
-  \item [*Cloned]  
-  \item [*Migration]  
-  \item [*Copy]  
-  \item [*Save]  
-\end{itemize}
+\begin{bsysitemize}
+  \item [Backup]
+  \item [*Archive]
+  \item [*Cloned]
+  \item [*Migration]
+  \item [*Copy]
+  \item [*Save]
+\end{bsysitemize}
    Note, only Backup is current implemented.
 
+\label{Director:Pool:Storage}
 \item [Storage = \lt{}storage-resource-name\gt{}]
 \index[dir]{Storage}
 \index[dir]{Directive!Storage}
    The Storage directive defines the name of the storage services where you
    want to backup the FileSet data.  For additional details, see the
-   \ilink{Storage Resource Chapter}{StorageResource2} of this manual.
+   \ilink{Storage Resource Chapter}{StorageResource} of this manual.
    The Storage resource may also be specified in the Job resource,
    but the value, if any, in the Pool resource overrides any value
    in the Job. This Storage resource definition is not required by either
    the Job resource or in the Pool, but it must be specified in
    one or the other.  If not configuration error will result.
 
+   \label{Director:Pool:UseVolumeOnce}
 \item [Use Volume Once = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Use Volume Once}
    \index[dir]{Directive!Use Volume Once}
@@ -2720,6 +2891,7 @@ The Pool Resource defined in the Director's configuration file
    Please see the notes below under {\bf Maximum Volume Jobs} concerning
    using this directive with multiple simultaneous jobs.
 
+   \label{Director:Pool:MaximumVolumeJobs}
 \item [Maximum Volume Jobs = \lt{}positive-integer\gt{}]
    \index[dir]{Maximum Volume Jobs}
    \index[dir]{Directive!Maximum Volume Jobs}
@@ -2736,15 +2908,16 @@ The Pool Resource defined in the Director's configuration file
    file is the default value used when a Volume  is created. Once the volume is
    created, changing the value  in the bacula-dir.conf file will not change what
    is stored  for the Volume. To change the value for an existing Volume  you
-   must use the {\bf update} command in the Console.  
+   must use the {\bf update} command in the Console.
 
    If you are running multiple simultaneous jobs, this directive may not
    work correctly because when a drive is reserved for a job, this
-   directive is not taken into account, so multiple jobs may try to 
+   directive is not taken into account, so multiple jobs may try to
    start writing to the Volume. At some point, when the Media record is
    updated, multiple simultaneous jobs may fail since the Volume can no
    longer be written.
 
+   \label{Director:Pool:MaximumVolumeFiles}
 \item [Maximum Volume Files = \lt{}positive-integer\gt{}]
    \index[dir]{Maximum Volume Files}
    \index[dir]{Directive!Maximum Volume Files}
@@ -2764,6 +2937,7 @@ The Pool Resource defined in the Director's configuration file
    what is stored for the Volume.  To change the value for an existing
    Volume you must use the {\bf update} command in the Console.
 
+   \label{Director:Pool:MaximumVolumeBytes}
 \item [Maximum Volume Bytes = \lt{}size\gt{}]
    \index[dir]{Maximum Volume Bytes}
    \index[dir]{Directive!Maximum Volume Bytes}
@@ -2787,6 +2961,7 @@ The Pool Resource defined in the Director's configuration file
    what is stored for the Volume.  To change the value for an existing
    Volume you must use the {\bf update} command in the Console.
 
+   \label{Director:Pool:VolumeUseDuration}
 \item [Volume Use Duration = \lt{}time-period-specification\gt{}]
    \index[dir]{Volume Use Duration}
    \index[dir]{Directive!Volume Use Duration}
@@ -2803,7 +2978,7 @@ The Pool Resource defined in the Director's configuration file
    during such a command, the Volume status may also be changed.
    Once the Volume is
    recycled, it will be available for use again.
-   
+
    You might use this directive, for example, if you have a Volume used for
    Incremental backups, and Volumes used for Weekly Full backups.  Once the
    Full backup is done, you will want to use a different Incremental
@@ -2814,7 +2989,7 @@ The Pool Resource defined in the Director's configuration file
    hours, or you might experience problems of Bacula waiting for a tape
    over the weekend only to complete the backups Monday morning when an
    operator mounts a new tape.
-   
+
    The use duration is checked and the {\bf Used} status is set only at the
    end of a job that writes to the particular volume, which means that even
    though the use duration may have expired, the catalog entry will not be
@@ -2823,14 +2998,15 @@ The Pool Resource defined in the Director's configuration file
    and will not work correctly (i.e. will fail jobs) if the use
    duration expires while multiple simultaneous jobs are writing
    to the volume.
-      
+
    Please note that the value defined by this directive in the  bacula-dir.conf
    file is the default value used when a Volume  is created. Once the volume is
    created, changing the value  in the bacula-dir.conf file will not change what
    is stored  for the Volume. To change the value for an existing Volume  you
-   must use the 
-   \ilink{\bf update volume}{UpdateCommand} command in the Console.  
+   must use the
+   \bsysxrlink{update volume}{UpdateCommand}{console}{command} in the \consoleman{}.
 
+   \label{Director:Pool:CatalogFiles}
 \item [Catalog Files = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Catalog Files}
    \index[dir]{Directive!Catalog Files}
@@ -2842,8 +3018,9 @@ The Pool Resource defined in the Director's configuration file
    for each Job (this is often called Browsing).  Also, without the File
    entries in the catalog, you will not be able to use the Console {\bf
    restore} command nor any other command that references File entries.
-   
 \label{PoolAutoPrune}
+
+   \label{Director:Pool:AutoPrune}
 \item [AutoPrune = \lt{}yes\vb{}no\gt{}]
    \index[dir]{AutoPrune}
    \index[dir]{Directive!AutoPrune}
@@ -2853,8 +3030,9 @@ The Pool Resource defined in the Director's configuration file
    pruning causes expired Jobs (older than the {\bf Volume Retention}
    period) to be deleted from the Catalog and permits possible recycling of
    the Volume.
-   
 \label{VolRetention}
+
+   \label{Director:Pool:VolumeRetention}
 \item [Volume Retention = \lt{}time-period-specification\gt{}]
    \index[dir]{Volume Retention}
    \index[dir]{Directive!Volume Retention}
@@ -2878,10 +3056,10 @@ The Pool Resource defined in the Director's configuration file
    pruning could also occur during a {\bf status dir} command because it
    uses similar algorithms for finding the next available Volume.
 
-   It is important to know that when the Volume Retention period expires, 
+   It is important to know that when the Volume Retention period expires,
    Bacula does not automatically recycle a Volume. It attempts to keep the
    Volume data intact as long as possible before over writing the Volume.
-   
+
    By defining multiple Pools with different Volume Retention periods, you
    may effectively have a set of tapes that is recycled weekly, another
    Pool of tapes that is recycled monthly and so on.  However, one must
@@ -2893,7 +3071,7 @@ The Pool Resource defined in the Director's configuration file
    Retention} period should be at twice the interval of your Full backups.
    This means that if you do a Full backup once a month, the minimum Volume
    retention period should be two months.
-   
+
    The default Volume retention period is 365 days, and either the default
    or the value defined by this directive in the bacula-dir.conf file is
    the default value used when a Volume is created.  Once the volume is
@@ -2901,6 +3079,7 @@ The Pool Resource defined in the Director's configuration file
    what is stored for the Volume.  To change the value for an existing
    Volume you must use the {\bf update} command in the Console.
 
+\label{Director:Pool:ActionOnPurge}
 \item [Action On Purge = \lt{Truncate}]
 \index[dir]{actiononpurge}
 
@@ -2909,18 +3088,18 @@ volume when it is purged with the \texttt{purge volume action=truncate}
 command. It is useful to prevent disk based volumes from consuming too much
 space.
 
-\begin{verbatim}
+\begin{lstlisting}
 Pool {
   Name = Default
   Action On Purge = Truncate
   ...
 }
-\end{verbatim}
+\end{lstlisting}
 
 You can schedule the truncate operation at the end of your CatalogBackup job
 like in this example:
 
-\begin{verbatim}
+\begin{lstlisting}
 Job {
  Name = CatalogBackup
  ...
@@ -2930,9 +3109,10 @@ Job {
    Console = "purge volume action=all allpools storage=File"
  }
 }
-\end{verbatim}
-
+\end{lstlisting}
 \label{PoolScratchPool}
+
+   \label{Director:Pool:ScratchPool}
 \item [ScratchPool = \lt{}pool-resource-name\gt{}]
    \index[dir]{ScrachPool}
    \index[dir]{Directive!ScrachPool}
@@ -2942,8 +3122,9 @@ Job {
    \ilink{Scratch Pool}{TheScratchPool} section of this manual. This is useful
    when using multiple storage sharing the same mediatype or when you want to
    dedicate volumes to a particular set of pool.
-
 \label{PoolRecyclePool}
+
+   \label{Director:Pool:RecyclePool}
 \item [RecyclePool = \lt{}pool-resource-name\gt{}]
    \index[dir]{RecyclePool}
    \index[dir]{Directive!RecyclePool}
@@ -2953,7 +3134,7 @@ Job {
    recycled. With this directive, it can be moved automatically to any
    existing pool during a recycle. This directive is probably most
    useful when defined in the Scratch pool, so that volumes will
-   be recycled back into the Scratch pool. For more on the see the   
+   be recycled back into the Scratch pool. For more on the see the
    \ilink{Scratch Pool}{TheScratchPool} section of this manual.
 
    Although this directive is called RecyclePool, the Volume in
@@ -2961,9 +3142,10 @@ Job {
    you specify on this directive when Bacula prunes the Volume and
    discovers that there are no records left in the catalog and hence
    marks it as {\bf Purged}.
-        
-   
+
 \label{PoolRecycle}
+
+   \label{Director:Pool:Recycle}
 \item [Recycle = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Recycle}
    \index[dir]{Directive!Recycle}
@@ -2985,14 +3167,15 @@ Job {
    for an existing Volume you must use the {\bf update} command in the
    Console.
 
-   When all Job and File records have been pruned or purged from the      
+   When all Job and File records have been pruned or purged from the
    catalog for a particular Volume, if that Volume is marked as
    Append, Full, Used, or Error, it will then be marked as Purged. Only
    Volumes marked as Purged will be considered to be converted to the
    Recycled state if the {\bf Recycle} directive is set to {\bf yes}.
 
-
 \label{RecycleOldest}
+
+   \label{Director:Pool:RecycleOldestVolume}
 \item [Recycle Oldest Volume = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Recycle Oldest Volume}
    \index[dir]{Directive!Recycle Oldest Volume}
@@ -3008,15 +3191,16 @@ Job {
 
    This directive can be useful if you have a fixed number of Volumes in the
    Pool and you want to cycle through them and you have specified the correct
-   retention periods.  
+   retention periods.
 
    However, if you use this directive and have only one
    Volume in the Pool, you will immediately recycle your Volume if you fill
    it and Bacula needs another one. Thus your backup will be totally invalid.
    Please use this directive with care. The default is {\bf no}.
-
 \label{RecycleCurrent}
 
+
+   \label{Director:Pool:RecycleCurrentVolume}
 \item [Recycle Current Volume = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Recycle Current Volume}
    \index[dir]{Directive!Recycle Current Volume}
@@ -3037,9 +3221,10 @@ Job {
    you will immediately recycle your Volume if you fill it and Bacula needs
    another one.  Thus your backup will be totally invalid.  Please use this
    directive with care.  The default is {\bf no}.
-
 \label{PurgeOldest}
 
+
+   \label{Director:Pool:PurgeOldestVolume}
 \item [Purge Oldest Volume = \lt{}yes\vb{}no\gt{}]
    \index[dir]{Purge Oldest Volume}
    \index[dir]{Directive!Purge Oldest Volume}
@@ -3069,12 +3254,13 @@ Job {
    sure that some day, Bacula will recycle a Volume that contains current
    data.  The default is {\bf no}.
 
+   \label{Director:Pool:FileRetention}
 \item [File Retention = \lt{}time-period-specification\gt{}]
    \index[dir]{File Retention}
    \index[dir]{Directive!File Retention}
    The File Retention directive defines the length of time that  Bacula will
    keep File records in the Catalog database after the End time of the
-   Job corresponding to the File records. 
+   Job corresponding to the File records.
 
    This directive takes precedence over Client directives of the same name. For
    example, you can decide to increase Retention times for Archive or OffSite
@@ -3086,6 +3272,7 @@ Job {
    For more information see Client documentation about
    \ilink{FileRetention}{FileRetention}
 
+   \label{Director:Pool:JobRetention}
 \item [Job Retention = \lt{}time-period-specification\gt{}]
    \index[dir]{Job Retention}
    \index[dir]{Directive!Job Retention}
@@ -3102,6 +3289,7 @@ Job {
    For more information see Client side documentation
    \ilink{JobRetention}{JobRetention}
 
+   \label{Director:Pool:CleaningPrefix}
 \item [Cleaning Prefix = \lt{}string\gt{}]
    \index[dir]{Cleaning Prefix}
    \index[dir]{Directive!Cleaning Prefix}
@@ -3111,8 +3299,9 @@ Job {
    never attempt to use this tape.  This is primarily for use with
    autochangers that accept barcodes where the convention is that barcodes
    beginning with {\bf CLN} are treated as cleaning tapes.
-
 \label{Label}
+
+   \label{Director:Pool:LabelFormat}
 \item [Label Format = \lt{}format\gt{}]
    \index[dir]{Label Format}
    \index[dir]{Directive!Label Format}
@@ -3134,8 +3323,8 @@ Job {
    begin with a dollar sign ({\bf \$}) or a left bracket ({\bf [}).  If you
    specify variable expansion characters, you should always enclose the
    format with double quote characters ({\bf "}).  For more details on
-   variable expansion, please see the \ilink{Variable
-   Expansion}{VarsChapter} Chapter of this manual.
+   variable expansion, please see the \bsysxrlink{Variable
+   Expansion}{VarsChapter}{misc}{chapter} of the \miscman{}.
 
    If no variable expansion characters are found in the string, the Volume
    name will be formed from the {\bf format} string appended with the
@@ -3144,17 +3333,18 @@ Job {
    is not guaranteed. The unique number will be edited as four
    digits with leading zeros.  For example, with a {\bf Label Format =
    "File-"}, the first volumes will be named {\bf File-0001}, {\bf
-   File-0002}, ...
+   File-0002}, \ldots{}
 
    With the exception of Job specific variables, you can test your {\bf
-   LabelFormat} by using the \ilink{ var command}{var} the Console Chapter
  of this manual.
+   LabelFormat} by using the \bsysxrlink{var}{var}{console}{command} in the
\consoleman{}.
 
    In almost all cases, you should enclose the format specification (part
    after the equal sign) in double quotes.  Please note that this directive
    is deprecated and is replaced in version 1.37 and greater with a Python
    script for creating volume names.
 
+\label{Director:Pool:End}
 \end{description}
 
 In order for a Pool to be used during a Backup Job, the Pool must have at
@@ -3167,31 +3357,31 @@ the Volume.  This will be automatically done if you use the {\bf label}
 command.  Bacula can automatically label Volumes if instructed to do so,
 but this feature is not yet fully implemented.
 
-The following is an example of a valid Pool resource definition: 
+The following is an example of a valid Pool resource definition:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
+
 Pool {
   Name = Default
   Pool Type = Backup
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-\subsection{The Scratch Pool}
 \label{TheScratchPool}
+\subsection{The Scratch Pool}
 \index[general]{Scratch Pool}
-In general, you can give your Pools any name you wish, but there is one 
-important restriction: the Pool named {\bf Scratch}, if it exists behaves 
-like a scratch pool of Volumes in that when Bacula needs a new Volume for 
+In general, you can give your Pools any name you wish, but there is one
+important restriction: the Pool named {\bf Scratch}, if it exists behaves
+like a scratch pool of Volumes in that when Bacula needs a new Volume for
 writing and it cannot find one, it will look in the Scratch pool, and if
 it finds an available Volume, it will move it out of the Scratch pool into
 the Pool currently being used by the job.
 
 
-\section{The Catalog Resource}
 \label{CatalogResource}
+\section{The Catalog Resource}
 \index[general]{Resource!Catalog}
 \index[general]{Catalog Resource}
 
@@ -3201,7 +3391,7 @@ PostgreSQL) that is defined when configuring {\bf Bacula}.  However, there
 may be as many Catalogs (databases) defined as you wish.  For example, you
 may want each Client to have its own Catalog database, or you may want
 backup jobs to use one database and verify or restore jobs to use another
-database. 
+database.
 
 Since SQLite is compiled in, it always runs on the same machine
 as the Director and the database must be directly accessible (mounted) from
@@ -3218,6 +3408,7 @@ or on a different machine on the network.  See below for more details.
 defined.
 
 
+   \label{Director:Catalog:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
@@ -3226,12 +3417,14 @@ defined.
    indicating that all catalog data for that Client is maintained in this
    Catalog.  This directive is required.
 
+   \label{Director:Catalog:Password}
 \item [password = \lt{}password\gt{}]
    \index[dir]{password}
    \index[dir]{Directive!password}
    This specifies the password to use when logging into the database.  This
    directive is required.
 
+   \label{Director:Catalog:DbName}
 \item [DB Name = \lt{}name\gt{}]
    \index[dir]{DB Name}
    \index[dir]{Directive!DB Name}
@@ -3241,12 +3434,14 @@ defined.
    that is known to the server (i.e.  you explicitly created the Bacula
    tables using this name.  This directive is required.
 
+   \label{Director:Catalog:User}
 \item [user = \lt{}user\gt{}]
    \index[dir]{user}
    \index[dir]{Directive!user}
    This specifies what user name to use to log into the database.  This
    directive is required.
 
+   \label{Director:Catalog:DbSocket}
 \item [DB Socket = \lt{}socket-name\gt{}]
    \index[dir]{DB Socket}
    \index[dir]{Directive!DB Socket}
@@ -3256,15 +3451,17 @@ defined.
    will use the default socket. If the DB Socket is specified, the
    MySQL server must reside on the same machine as the Director.
 
+   \label{Director:Catalog:DBAddress}
 \item [DB Address = \lt{}address\gt{}]
    \index[dir]{DB Address}
    \index[dir]{Directive!DB Address}
    This is the host address  of the database server. Normally, you would specify
    this instead  of {\bf DB Socket} if the database server is on another machine.
    In that case, you will also specify {\bf DB Port}. This directive  is used
-   only by MySQL and PostgreSQL and is ignored by SQLite if provided.  
-   This directive is optional.  
+   only by MySQL and PostgreSQL and is ignored by SQLite if provided.
+   This directive is optional.
 
+   \label{Director:Catalog:DbPort}
 \item [DB Port = \lt{}port\gt{}]
    \index[dir]{DB Port}
    \index[dir]{Directive!DB Port}
@@ -3273,8 +3470,10 @@ defined.
    by MySQL and PostgreSQL and is ignored by SQLite if provided.  This
    directive is optional.
 
+\label{Director:Catalog:End}
+
 %% \item [Multiple Connections = \lt{}yes\vb{}no\gt{}]
-%% \index[dir]{Multiple Connections}
+
 %% \index[dir]{Directive!Multiple Connections}
 %% By default, this  directive is set to no. In that case, each job that uses
 the
@@ -3282,7 +3481,7 @@ the
 %% and Bacula will allow only one Job at a time to  communicate. If you set this
 %% directive to yes, Bacula will  permit multiple connections to the database,
 %% and the database  must be multi-thread capable. For SQLite and PostgreSQL,
-%% this is  no problem. For MySQL, you must be *very* careful to have the 
+%% this is  no problem. For MySQL, you must be *very* careful to have the
 %% multi-thread version of the client library loaded on your system.  When this
 %% directive is set yes, each Job will have a separate  connection to the
 %% database, and the database will control the  interaction between the
@@ -3291,17 +3490,17 @@ different
 %% running multiple  simultaneous jobs. In addition, for SQLite and PostgreSQL,
 %% Bacula  will automatically enable transactions. This can significantly  speed
 %% up insertion of attributes in the database either for  a single Job or
-%% multiple simultaneous Jobs.  
+%% multiple simultaneous Jobs.
 
 %% This directive has not been tested. Please test carefully  before running it
-%% in production and report back your results.  
+%% in production and report back your results.
 
 \end{description}
 
-The following is an example of a valid Catalog resource definition: 
+The following is an example of a valid Catalog resource definition:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Catalog
 {
   Name = SQLite
@@ -3309,13 +3508,13 @@ Catalog
   user = bacula;
   password = ""                       # no password = no security
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-or for a Catalog on another machine: 
+or for a Catalog on another machine:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 Catalog
 {
   Name = MySQL
@@ -3325,39 +3524,39 @@ Catalog
   DB Address = remote.acme.com
   DB Port = 1234
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize
 
-\section{The Messages Resource}
 \label{MessagesResource2}
+\section{The Messages Resource}
 \index[general]{Resource!Messages}
 \index[general]{Messages Resource}
 
-For the details of the Messages Resource, please see the 
+For the details of the Messages Resource, please see the
 \ilink{Messages Resource Chapter}{MessagesChapter} of this
-manual. 
+manual.
 
-\section{The Console Resource}
 \label{ConsoleResource1}
+\section{The Console Resource}
 \index[general]{Console Resource}
 \index[general]{Resource!Console}
 
 As of Bacula version 1.33 and higher, there are three different kinds of
 consoles, which the administrator or user can use to interact with the
 Director. These three kinds of consoles comprise three different security
-levels. 
+levels.
 
-\begin{itemize}
+\begin{bsysitemize}
 \item The first console type is an {\bf anonymous} or {\bf default}  console,
    which has full privileges.  There is no console resource necessary for
    this type since the password is specified in the Director's resource and
    consequently such consoles do not have a name as defined on a {\bf Name
    =} directive.  This is the kind of console that was initially
    implemented in versions prior to 1.33 and remains valid.  Typically you
-   would use it only for  administrators.  
+   would use it only for  administrators.
 
 \item The second type of console, and new to version 1.33 and  higher is a
-   "named" console defined within a Console resource in both the Director's
+   ``named'' console defined within a Console resource in both the Director's
    configuration file and in the Console's configuration file.  Both the
    names and the passwords in these two entries must match much as is the
    case for Client programs.
@@ -3379,21 +3578,23 @@ levels.
    use the {\bf SetIP} command to change the Address directive in the
    Director's client resource to the IP address of the Console.  This
    permits portables or other machines using DHCP (non-fixed IP addresses)
-   to "notify" the Director of their current IP address.
-\end{itemize}
+   to ``notify'' the Director of their current IP address.
+\end{bsysitemize}
 
 The Console resource is optional and need not be specified. The following
-directives are permitted within the Director's configuration resource: 
+directives are permitted within the Director's configuration resource:
 
 \begin{description}
 
+   \label{Director:Console:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
    The name of the console. This  name must match the name specified in the
 Console's configuration  resource (much as is the case with Client
-definitions).  
+definitions).
 
+   \label{Director:Console:Password}
 \item [Password = \lt{}password\gt{}]
    \index[dir]{Password}
    \index[dir]{Directive!Password}
@@ -3407,9 +3608,10 @@ definitions).
    process, otherwise it will be left blank.
 
    The password is plain text.  It is not generated through any special
-   process.  However, it is preferable for security reasons to choose 
-   random text.      
+   process.  However, it is preferable for security reasons to choose
+   random text.
 
+   \label{Director:Console:JobAcl}
 \item [JobACL = \lt{}name-list\gt{}]
    \index[dir]{JobACL}
    \index[dir]{Directive!JobACL}
@@ -3421,59 +3623,67 @@ definitions).
    as:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
     JobACL = kernsave, "Backup client 1", "Backup client 2"
     JobACL = "RestoreFiles"
-    
-\end{verbatim}
+
+\end{lstlisting}
 \normalsize
 
 With the above specification, the console can access the Director's  resources
-for the four jobs named on the JobACL directives,  but for no others.  
+for the four jobs named on the JobACL directives,  but for no others.
 
+   \label{Director:Console:ClientAcl}
 \item [ClientACL = \lt{}name-list\gt{}]
    \index[dir]{ClientACL}
    \index[dir]{Directive!ClientACL}
    This directive is used to  specify a list of Client resource names that can
 be
-accessed by  the console.  
+accessed by  the console.
 
+   \label{Director:Console:StorageAcl}
 \item [StorageACL = \lt{}name-list\gt{}]
    \index[dir]{StorageACL}
    \index[dir]{Directive!StorageACL}
    This directive is used to  specify a list of Storage resource names that can
-be accessed by  the console.  
+be accessed by  the console.
 
+   \label{Director:Console:ScheduleAcl}
 \item [ScheduleACL = \lt{}name-list\gt{}]
    \index[dir]{ScheduleACL}
    \index[dir]{Directive!ScheduleACL}
    This directive is used to  specify a list of Schedule resource names that can
    be accessed by the console.
 
+   \label{Director:Console:PoolAcl}
 \item [PoolACL = \lt{}name-list\gt{}]
    \index[dir]{PoolACL}
    \index[dir]{Directive!PoolACL}
    This directive is used to  specify a list of Pool resource names that can be
    accessed by the console.
 
+   \label{Director:Console:FileSetAcl}
 \item [FileSetACL = \lt{}name-list\gt{}]
    \index[dir]{FileSetACL}
    \index[dir]{Directive!FileSetACL}
    This directive is used to specify a list of FileSet resource names that
    can be accessed by the console.
 
+   \label{Director:Console:CatalogAcl}
 \item [CatalogACL = \lt{}name-list\gt{}]
    \index[dir]{CatalogACL}
    \index[dir]{Directive!CatalogACL}
    This directive is used to specify a list of Catalog resource names that
    can be accessed by the console.
 
+   \label{Director:Console:CommandAcl}
 \item [CommandACL = \lt{}name-list\gt{}]
    \index[dir]{CommandACL}
    \index[dir]{Directive!CommandACL}
    This directive is used to specify a list of of console commands that can
    be executed by the console.
 
+   \label{Director:Console:WhereAcl}
 \item [WhereACL = \lt{}string\gt{}]
    \index[dir]{WhereACL}
    \index[dir]{Directive!WhereACL}
@@ -3484,7 +3694,7 @@ be accessed by  the console.
    user enters will be accepted (not very secure), any other
    value specified (there may be multiple WhereACL directives) will
    restrict the user to use that path. For example, on a Unix system,
-   if you specify "/", the file will be restored to the original 
+   if you specify ``/'', the file will be restored to the original
    location.  This directive is untested.
 
 \end{description}
@@ -3493,40 +3703,43 @@ Aside from Director resource names and console command names, the special
 keyword {\bf *all*} can be specified in any of the above access control lists.
 When this keyword is present, any resource or command name (which ever is
 appropriate) will be accepted. For an example configuration file, please see
-the 
+the
 \ilink{Console Configuration}{ConsoleConfChapter} chapter of this
-manual. 
+manual.
 
-\section{The Counter Resource}
 \label{CounterResource}
+\section{The Counter Resource}
 \index[general]{Resource!Counter}
 \index[general]{Counter Resource}
 
 The Counter Resource defines a counter variable that can be accessed by
 variable expansion used for creating Volume labels with the {\bf LabelFormat}
-directive. See the 
+directive. See the
 \ilink{LabelFormat}{Label} directive in this chapter for more
-details. 
+details.
 
 \begin{description}
 
-\item [Counter] 
+\item [Counter]
    \index[dir]{Counter}
    \index[dir]{Directive!Counter}
-   Start of the Counter resource.  Counter directives are optional. 
+   Start of the Counter resource.  Counter directives are optional.
 
+   \label{Director:Counter:Name}
 \item [Name = \lt{}name\gt{}]
    \index[dir]{Name}
    \index[dir]{Directive!Name}
    The name of the Counter.  This is the name you will use in the variable
-expansion  to reference the counter value.  
+expansion  to reference the counter value.
 
+   \label{Director:Counter:Minimum}
 \item [Minimum = \lt{}integer\gt{}]
    \index[dir]{Minimum}
    \index[dir]{Directive!Minimum}
    This specifies the minimum  value that the counter can have. It also becomes
-the default.  If not supplied, zero is assumed.  
+the default.  If not supplied, zero is assumed.
 
+   \label{Director:Counter:Maximum}
 \item [Maximum = \lt{}integer\gt{}]
    \index[dir]{Maximum}
    \index[dir]{Directive!Maximum}
@@ -3534,33 +3747,37 @@ the default.  If not supplied, zero is assumed.
    This is the maximum value  value that the counter can have. If not specified
 or set to  zero, the counter can have a maximum value of 2,147,483,648  (2 to
 the 31 power). When the counter is incremented past  this value, it is reset
-to the Minimum.  
+to the Minimum.
 
+   \label{Director:Counter:*WrapCounter}
 \item [*WrapCounter = \lt{}counter-name\gt{}]
    \index[dir]{*WrapCounter}
    \index[dir]{Directive!*WrapCounter}
    If this value  is specified, when the counter is incremented past the
-maximum 
+maximum
 and thus reset to the minimum, the counter specified on the  {\bf WrapCounter}
-is incremented. (This is not currently  implemented). 
+is incremented. (This is not currently  implemented).
 
+   \label{Director:Counter:Catalog}
 \item [Catalog = \lt{}catalog-name\gt{}]
    \index[dir]{Catalog}
    \index[dir]{Directive!Catalog}
-   If this directive is  specified, the counter and its values will be saved in 
+   If this directive is  specified, the counter and its values will be saved in
 the specified catalog. If this directive is not present, the  counter will be
-redefined each time that Bacula is started. 
+redefined each time that Bacula is started.
+
+\label{Director:Counter:End}
 \end{description}
 
-\section{Example Director Configuration File}
 \label{SampleDirectorConfiguration}
+\section{Example Director Configuration File}
 \index[general]{File!Example Director Configuration}
 \index[general]{Example Director Configuration File}
 
-An example Director configuration file might be the following: 
+An example Director configuration file might be the following:
 
 \footnotesize
-\begin{verbatim}
+\begin{lstlisting}
 #
 # Default Bacula Director Configuration file
 #
@@ -3603,7 +3820,7 @@ Job {
   Messages = Standard
   Pool = Default
 }
-   
+
 # List of files to be backed up
 FileSet {
   Name = "Full Set"
@@ -3690,7 +3907,7 @@ Messages {
   operator = root@localhost = mount
   console = all, !skipped, !saved
 }
-    
+
 # Default pool definition
 Pool {
   Name = Default
@@ -3706,5 +3923,5 @@ Console {
   Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR"
   CommandACL = status, .status
 }
-\end{verbatim}
+\end{lstlisting}
 \normalsize