2.3. Director Configuration

[TAG=Director->Configuration] [TAG=Configuration->Director]

Of all the configuration files needed to run Bareos, 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.

For a general discussion of configuration files and resources including the recognized data types see Customizing the Configuration.

[TAG=Types->Director Resource] [TAG=Director->Resource Types] [TAG=Resource Types]

Everything revolves around a job and is tied to a job in one way or another.

The Bareos Director Daemon knows about following resource types:

  • Director Resource – 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 configuration file.
  • Job Resource – 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).
  • JobDefs Resource – optional resource for providing defaults for Job resources.
  • Schedule Resource – to define when a Job has to run. You may have any number of Schedules, but each job will reference only one.
  • FileSet Resource – 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.
  • Client Resource – to define what Client is to be backed up. You will generally have multiple Client definitions. Each Job will reference only a single client.
  • Storage Resource – to define on what physical device the Volumes should be mounted. You may have one or more Storage definitions.
  • Pool Resource – 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.
  • Catalog Resource – to define in what database to keep the list of files and the Volume names where they are backed up. Most people only use a single catalog. It is possible, however not adviced and not supported to use multiple catalogs, see MultipleCatalogs.
  • Messages Resource – 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, …).

2.3.1. Director Resource

[TAG=Director Resource] [TAG=Resource->Director]

The Director resource defines the attributes of the Directors running on the network. Only a single Director resource is allowed.

The following is an example of a valid Director resource definition:

Director Resource example
Director {
  Name = bareos-dir
  Password = secretpassword
  QueryFile = "/etc/bareos/query.sql"
  Maximum Concurrent Jobs = 10
  Messages = Daemon
}

begin{description}

resourceDirective{Dir}{Director}{Absolute Job Timeout}{dt{Pint32}}{}{}{14.2.0}{}

resourceDirective{Dir}{Director}{Audit Events}{dt{AuditCommandList}}{}{}{14.2.0}{}

resourceDirective{Dir}{Director}{Auditing}{dt{Boolean}}{}{no}{14.2.0}{}

resourceDirective{Dir}{Director}{Backend Directory}{dt{DirectoryList}}{}{/home/joergs/git/bareos/bareos-18.2/regress/usr/lib/bareos/backends textit{small(platform specific)}}{}{}

resourceDirective{Dir}{Director}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Director}{Dir Address}{dt{Address}}{}{8101}{}{}

resourceDirective{Dir}{Director}{Dir Addresses}{dt{Addresses}}{}{8101}{}{}

resourceDirective{Dir}{Director}{Dir Port}{dt{Port}}{}{8101}{}{}

resourceDirective{Dir}{Director}{Dir Source Address}{dt{Address}}{}{0}{}{}

resourceDirective{Dir}{Director}{FD Connect Timeout}{dt{Time}}{}{180}{}{}

resourceDirective{Dir}{Director}{Heartbeat Interval}{dt{Time}}{}{0}{}{}

resourceDirective{Dir}{Director}{Key Encryption Key}{dt{Autopassword}}{}{}{}{}

resourceDirective{Dir}{Director}{Log Timestamp Format}{dt{String}}{}{}{15.2.3}{}

resourceDirective{Dir}{Director}{Maximum Concurrent Jobs}{dt{Pint32}}{}{1}{}{}

resourceDirective{Dir}{Director}{Maximum Connections}{dt{Pint32}}{}{30}{}{}

resourceDirective{Dir}{Director}{Maximum Console Connections}{dt{Pint32}}{}{20}{}{}

resourceDirective{Dir}{Director}{Messages}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Director}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Director}{NDMP Log Level}{dt{Pint32}}{}{4}{13.2.0}{}

resourceDirective{Dir}{Director}{NDMP Snooping}{dt{Boolean}}{}{}{13.2.0}{}

resourceDirective{Dir}{Director}{Omit Defaults}{dt{Boolean}}{}{yes}{deprecated}{Omit config variables with default values when dumping the config.}

resourceDirective{Dir}{Director}{Optimize For Size}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Director}{Optimize For Speed}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Director}{Password}{dt{Autopassword}}{required}{}{}{}

resourceDirective{Dir}{Director}{Pid Directory}{dt{Directory}}{}{/home/joergs/git/bareos/bareos-18.2/regress/working textit{small(platform specific)}}{}{}

resourceDirective{Dir}{Director}{Plugin Directory}{dt{Directory}}{}{}{14.2.0}{Plugins are loaded from this directory. To load only specific plugins, use ‘Plugin Names’.}

resourceDirective{Dir}{Director}{Plugin Names}{dt{PluginNames}}{}{}{14.2.0}{List of plugins, that should get loaded from ‘Plugin Directory’ (only basenames, ‘-dir.so’ is added automatically). If empty, all plugins will get loaded.}

resourceDirective{Dir}{Director}{Query File}{dt{Directory}}{required}{}{}{}

resourceDirective{Dir}{Director}{Scripts Directory}{dt{Directory}}{}{}{}{This directive is currently unused.}

resourceDirective{Dir}{Director}{SD Connect Timeout}{dt{Time}}{}{1800}{}{}

resourceDirective{Dir}{Director}{Secure Erase Command}{dt{String}}{}{}{15.2.1}{Specify command that will be called when bareos unlinks files.}

resourceDirective{Dir}{Director}{Statistics Collect Interval}{dt{Pint32}}{}{150}{14.2.0}{}

resourceDirective{Dir}{Director}{Statistics Retention}{dt{Time}}{}{160704000}{}{}

resourceDirective{Dir}{Director}{Sub Sys Directory}{dt{Directory}}{}{}{deprecated}{}

resourceDirective{Dir}{Director}{Subscriptions}{dt{Pint32}}{}{0}{12.4.4}{}

resourceDirective{Dir}{Director}{TLS Allowed CN}{dt{StringList}}{}{}{}{“Common Name”s (CNs) of the allowed peer certificates.}

resourceDirective{Dir}{Director}{TLS Authenticate}{dt{Boolean}}{}{no}{}{Use TLS only to authenticate, not for encryption.}

resourceDirective{Dir}{Director}{TLS CA Certificate Dir}{dt{Stddirectory}}{}{}{}{Path of a TLS CA certificate directory.}

resourceDirective{Dir}{Director}{TLS CA Certificate File}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS CA certificate(s) file.}

resourceDirective{Dir}{Director}{TLS Certificate}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS certificate.}

resourceDirective{Dir}{Director}{TLS Certificate Revocation List}{dt{Stddirectory}}{}{}{}{Path of a Certificate Revocation List file.}

resourceDirective{Dir}{Director}{TLS Cipher List}{dt{String}}{}{}{}{List of valid TLS Ciphers.}

resourceDirective{Dir}{Director}{TLS DH File}{dt{Stddirectory}}{}{}{}{Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.}

resourceDirective{Dir}{Director}{TLS Enable}{dt{Boolean}}{}{no}{}{Enable TLS support.}

resourceDirective{Dir}{Director}{TLS Key}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded private key. It must correspond to the specified “TLS Certificate”.}

resourceDirective{Dir}{Director}{TLS PSK Enable}{dt{Boolean}}{}{yes}{}{Enable TLS-PSK support.}

resourceDirective{Dir}{Director}{TLS PSK Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicitly sets “TLS-PSK Enable = yes”.}

resourceDirective{Dir}{Director}{TLS Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencrypted connections. Enabling this implicitly sets “TLS Enable = yes”.}

resourceDirective{Dir}{Director}{TLS Verify Peer}{dt{Boolean}}{}{no}{}{If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the “TLS Allowed CN” list.}

resourceDirective{Dir}{Director}{Use Pam Authentication}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Director}{Ver Id}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Director}{Working Directory}{dt{Directory}}{}{/home/joergs/git/bareos/bareos-18.2/regress/working textit{small(platform specific)}}{}{}

end{description}

2.3.2. Job Resource

[TAG=Resource->Job] [TAG=Job->Resource]

The Job resource defines a Job (Backup, Restore, …) that Bareos 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 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 (Backup, Restore, …) 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.

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 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.

Multiple Storage daemons are not currently supported for Jobs, so if you do want to use multiple storage daemons, you will need to create a different Job and ensure that for each Job that the combination of Client and FileSet are unique. The Client and FileSet are what Bareos uses to restore a client, so if there are multiple Jobs with the same 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}

resourceDirective{Dir}{Job}{Accurate}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Add Prefix}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Job}{Add Suffix}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Job}{Allow Duplicate Jobs}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Job}{Allow Higher Duplicates}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Job}{Allow Mixed Priority}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Always Incremental}{dt{Boolean}}{}{no}{16.2.4}{Enable/disable always incremental backup scheme.}

resourceDirective{Dir}{Job}{Always Incremental Job Retention}{dt{Time}}{}{0}{16.2.4}{Backup Jobs older than the specified time duration will be merged into a new Virtual backup.}

resourceDirective{Dir}{Job}{Always Incremental Keep Number}{dt{Pint32}}{}{0}{16.2.4}{Guarantee that at least the specified number of Backup Jobs will persist, even if they are older than “Always Incremental Job Retention”.}

resourceDirective{Dir}{Job}{Always Incremental Max Full Age}{dt{Time}}{}{}{16.2.4}{If “AlwaysIncrementalMaxFullAge” is set, during consolidations only incremental backups will be considered while the Full Backup remains to reduce the amount of data being consolidated. Only if the Full Backup is older than “AlwaysIncrementalMaxFullAge”, the Full Backup will be part of the consolidation to avoid the Full Backup becoming too old .}

resourceDirective{Dir}{Job}{Backup Format}{dt{String}}{}{Native}{}{}

resourceDirective{Dir}{Job}{Base}{dt{ResourceList}}{}{}{}{}

resourceDirective{Dir}{Job}{Bootstrap}{dt{Directory}}{}{}{}{}

resourceDirective{Dir}{Job}{Cancel Lower Level Duplicates}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Cancel Queued Duplicates}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Cancel Running Duplicates}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Catalog}{dt{Commonresourceheader}}{}{}{13.4.0}{}

resourceDirective{Dir}{Job}{Client}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Client Run After Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{Job}{Client Run Before Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{Job}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Job}{Differential Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Differential Max Runtime}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Differential Max Wait Time}{dt{Time}}{}{}{deprecated}{}

resourceDirective{Dir}{Job}{Dir Plugin Options}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{Job}{Enabled}{dt{Boolean}}{}{yes}{}{En- or disable this resource.}

resourceDirective{Dir}{Job}{FD Plugin Options}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{Job}{File History Size}{dt{Size64}}{}{10000000}{15.2.4}{}

resourceDirective{Dir}{Job}{File Set}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Full Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Full Max Runtime}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Full Max Wait Time}{dt{Time}}{}{}{deprecated}{}

resourceDirective{Dir}{Job}{Incremental Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Incremental Max Runtime}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Incremental Max Wait Time}{dt{Time}}{}{}{deprecated}{}

resourceDirective{Dir}{Job}{Job Defs}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Job To Verify}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Level}{dt{BackupLevel}}{}{}{}{}

resourceDirective{Dir}{Job}{Max Concurrent Copies}{dt{Pint32}}{}{100}{}{}

resourceDirective{Dir}{Job}{Max Diff Interval}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Max Full Consolidations}{dt{Pint32}}{}{0}{16.2.4}{If “AlwaysIncrementalMaxFullAge” is configured, do not run more than “MaxFullConsolidations” consolidation jobs that include the Full backup.}

resourceDirective{Dir}{Job}{Max Full Interval}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Max Run Sched Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Max Run Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Max Start Delay}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Max Virtual Full Interval}{dt{Time}}{}{}{14.4.0}{}

resourceDirective{Dir}{Job}{Max Wait Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Job}{Maximum Bandwidth}{dt{Speed}}{}{}{}{}

resourceDirective{Dir}{Job}{Maximum Concurrent Jobs}{dt{Pint32}}{}{1}{}{}

resourceDirective{Dir}{Job}{Messages}{dt{Commonresourceheader}}{required}{}{}{}

resourceDirective{Dir}{Job}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Job}{Next Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Plugin Options}{dt{StringList}}{}{}{deprecated}{textit{This directive is an alias.}}

resourceDirective{Dir}{Job}{Pool}{dt{Commonresourceheader}}{required}{}{}{}

resourceDirective{Dir}{Job}{Prefer Mounted Volumes}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Job}{Prefix Links}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Priority}{dt{Pint32}}{}{10}{}{}

resourceDirective{Dir}{Job}{Protocol}{dt{ProtocolType}}{}{Native}{}{}

resourceDirective{Dir}{Job}{Prune Files}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Prune Jobs}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Prune Volumes}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Purge Migration Job}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Regex Where}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Job}{Replace}{dt{ReplaceOption}}{}{Always}{}{}

resourceDirective{Dir}{Job}{Rerun Failed Levels}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Reschedule Interval}{dt{Time}}{}{1800}{}{}

resourceDirective{Dir}{Job}{Reschedule On Error}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Reschedule Times}{dt{Pint32}}{}{5}{}{}

resourceDirective{Dir}{Job}{Run}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{Job}{Run After Failed Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{Job}{Run After Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{Job}{Run Before Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{Job}{Run Script}{dt{Runscript}}{}{}{}{}

resourceDirective{Dir}{Job}{Save File History}{dt{Boolean}}{}{yes}{14.2.0}{}

resourceDirective{Dir}{Job}{Schedule}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{SD Plugin Options}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{Job}{Selection Pattern}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Job}{Selection Type}{dt{MigrationType}}{}{}{}{}

resourceDirective{Dir}{Job}{Spool Attributes}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Spool Data}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Job}{Spool Size}{dt{Size64}}{}{}{}{}

resourceDirective{Dir}{Job}{Storage}{dt{ResourceList}}{}{}{}{}

resourceDirective{Dir}{Job}{Strip Prefix}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Job}{Type}{dt{JobType}}{required}{}{}{}

resourceDirective{Dir}{Job}{Verify Job}{dt{Commonresourceheader}}{}{}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{Job}{Virtual Full Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Job}{Where}{dt{Directory}}{}{}{}{}

resourceDirective{Dir}{Job}{Write Bootstrap}{dt{Directory}}{}{}{}{}

resourceDirective{Dir}{Job}{Write Part After Job}{dt{Boolean}}{}{}{deprecated}{}

resourceDirective{Dir}{Job}{Write Verify List}{dt{Directory}}{}{}{}{}

end{description}

The following is an example of a valid Job resource definition:

Job Resource Example
Job {
  Name = "Minou"
  Type = Backup
  Level = Incremental                 # default
  Client = Minou
  FileSet="Minou Full Set"
  Storage = DLTDrive
  Pool = Default
  Schedule = "MinouWeeklyCycle"
  Messages = Standard
}

2.3.3. JobDefs Resource

[TAG=Job->JobDefs Resource] [TAG=Resource->JobDefs]

The JobDefs resource permits all the same directives that can appear in a Job 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.

begin{description}

resourceDirective{Dir}{JobDefs}{Accurate}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Add Prefix}{dt{String}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Add Suffix}{dt{String}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Allow Duplicate Jobs}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{JobDefs}{Allow Higher Duplicates}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{JobDefs}{Allow Mixed Priority}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Always Incremental}{dt{Boolean}}{}{no}{16.2.4}{Enable/disable always incremental backup scheme.}

resourceDirective{Dir}{JobDefs}{Always Incremental Job Retention}{dt{Time}}{}{0}{16.2.4}{Backup Jobs older than the specified time duration will be merged into a new Virtual backup.}

resourceDirective{Dir}{JobDefs}{Always Incremental Keep Number}{dt{Pint32}}{}{0}{16.2.4}{Guarantee that at least the specified number of Backup Jobs will persist, even if they are older than “Always Incremental Job Retention”.}

resourceDirective{Dir}{JobDefs}{Always Incremental Max Full Age}{dt{Time}}{}{}{16.2.4}{If “AlwaysIncrementalMaxFullAge” is set, during consolidations only incremental backups will be considered while the Full Backup remains to reduce the amount of data being consolidated. Only if the Full Backup is older than “AlwaysIncrementalMaxFullAge”, the Full Backup will be part of the consolidation to avoid the Full Backup becoming too old .}

resourceDirective{Dir}{JobDefs}{Backup Format}{dt{String}}{}{Native}{}{}

resourceDirective{Dir}{JobDefs}{Base}{dt{ResourceList}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Bootstrap}{dt{Directory}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Cancel Lower Level Duplicates}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Cancel Queued Duplicates}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Cancel Running Duplicates}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Catalog}{dt{Commonresourceheader}}{}{}{13.4.0}{}

resourceDirective{Dir}{JobDefs}{Client}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Client Run After Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Client Run Before Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Differential Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Differential Max Runtime}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Differential Max Wait Time}{dt{Time}}{}{}{deprecated}{}

resourceDirective{Dir}{JobDefs}{Dir Plugin Options}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Enabled}{dt{Boolean}}{}{yes}{}{En- or disable this resource.}

resourceDirective{Dir}{JobDefs}{FD Plugin Options}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{File History Size}{dt{Size64}}{}{10000000}{15.2.4}{}

resourceDirective{Dir}{JobDefs}{File Set}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Full Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Full Max Runtime}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Full Max Wait Time}{dt{Time}}{}{}{deprecated}{}

resourceDirective{Dir}{JobDefs}{Incremental Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Incremental Max Runtime}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Incremental Max Wait Time}{dt{Time}}{}{}{deprecated}{}

resourceDirective{Dir}{JobDefs}{Job Defs}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Job To Verify}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Level}{dt{BackupLevel}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Max Concurrent Copies}{dt{Pint32}}{}{100}{}{}

resourceDirective{Dir}{JobDefs}{Max Diff Interval}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Max Full Consolidations}{dt{Pint32}}{}{0}{16.2.4}{If “AlwaysIncrementalMaxFullAge” is configured, do not run more than “MaxFullConsolidations” consolidation jobs that include the Full backup.}

resourceDirective{Dir}{JobDefs}{Max Full Interval}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Max Run Sched Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Max Run Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Max Start Delay}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Max Virtual Full Interval}{dt{Time}}{}{}{14.4.0}{}

resourceDirective{Dir}{JobDefs}{Max Wait Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Maximum Bandwidth}{dt{Speed}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Maximum Concurrent Jobs}{dt{Pint32}}{}{1}{}{}

resourceDirective{Dir}{JobDefs}{Messages}{dt{Commonresourceheader}}{required}{}{}{}

resourceDirective{Dir}{JobDefs}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{JobDefs}{Next Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Plugin Options}{dt{StringList}}{}{}{deprecated}{textit{This directive is an alias.}}

resourceDirective{Dir}{JobDefs}{Pool}{dt{Commonresourceheader}}{required}{}{}{}

resourceDirective{Dir}{JobDefs}{Prefer Mounted Volumes}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{JobDefs}{Prefix Links}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Priority}{dt{Pint32}}{}{10}{}{}

resourceDirective{Dir}{JobDefs}{Protocol}{dt{ProtocolType}}{}{Native}{}{}

resourceDirective{Dir}{JobDefs}{Prune Files}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Prune Jobs}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Prune Volumes}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Purge Migration Job}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Regex Where}{dt{String}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Replace}{dt{ReplaceOption}}{}{Always}{}{}

resourceDirective{Dir}{JobDefs}{Rerun Failed Levels}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Reschedule Interval}{dt{Time}}{}{1800}{}{}

resourceDirective{Dir}{JobDefs}{Reschedule On Error}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Reschedule Times}{dt{Pint32}}{}{5}{}{}

resourceDirective{Dir}{JobDefs}{Run}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Run After Failed Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Run After Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Run Before Job}{dt{RunscriptShort}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Run Script}{dt{Runscript}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Save File History}{dt{Boolean}}{}{yes}{14.2.0}{}

resourceDirective{Dir}{JobDefs}{Schedule}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{SD Plugin Options}{dt{StringList}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Selection Pattern}{dt{String}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Selection Type}{dt{MigrationType}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Spool Attributes}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Spool Data}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{JobDefs}{Spool Size}{dt{Size64}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Storage}{dt{ResourceList}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Strip Prefix}{dt{String}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Type}{dt{JobType}}{required}{}{}{}

resourceDirective{Dir}{JobDefs}{Verify Job}{dt{Commonresourceheader}}{}{}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{JobDefs}{Virtual Full Backup Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Where}{dt{Directory}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Write Bootstrap}{dt{Directory}}{}{}{}{}

resourceDirective{Dir}{JobDefs}{Write Part After Job}{dt{Boolean}}{}{}{deprecated}{}

resourceDirective{Dir}{JobDefs}{Write Verify List}{dt{Directory}}{}{}{}{}

end{description}

2.3.4. Schedule Resource

[TAG=Resource->Schedule] [TAG=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.

begin{description}

resourceDirective{Dir}{Schedule}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Schedule}{Enabled}{dt{Boolean}}{}{yes}{}{En- or disable this resource.}

resourceDirective{Dir}{Schedule}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Schedule}{Run}{dt{ScheduleRunCommand}}{}{}{}{}

end{description}

Note, the Week of Year specification wnn follows the ISO standard definition of the week of the year, where Week 1 is the week in which the first Thursday of the year occurs, or alternatively, the week which contains the 4th of January. Weeks are numbered w01 to w53. w00 for Bareos 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.

According to the NIST (US National Institute of Standards and Technology), 12am and 12pm are ambiguous and can be defined to anything. However, 12:01am is the same as 00:01 and 12:01pm is the same as 12:01, so Bareos defines 12am as 00:00 (midnight) and 12pm as 12:00 (noon). You can avoid this abiguity (confusion) by using 24 hour time specifications (i.e. no am/pm).

An example schedule resource that is named WeeklyCycle and runs a job with level full each Sunday at 2:05am and an incremental job Monday through Saturday at 2:05am is:

Schedule Example
Schedule {
  Name = "WeeklyCycle"
  Run = Level=Full sun at 2:05
  Run = Level=Incremental mon-sat at 2:05
}

An example of a possible monthly cycle is as follows:

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
}

The first of every month:

Schedule {
  Name = "First"
  Run = Level=Full on 1 at 2:05
  Run = Level=Incremental on 2-31 at 2:05
}

The last friday of the month (i.e. the last friday in the last week of the month)

Schedule {
  Name = "Last Friday"
  Run = Level=Full last fri at 21:00
}

Every 10 minutes:

Schedule {
  Name = "TenMinutes"
  Run = Level=Full hourly at 0:05
  Run = Level=Full hourly at 0:15
  Run = Level=Full hourly at 0:25
  Run = Level=Full hourly at 0:35
  Run = Level=Full hourly at 0:45
  Run = Level=Full hourly at 0:55
}

The modulo scheduler makes it easy to specify schedules like odd or even days/weeks, or more generally every n days or weeks. It is called modulo scheduler because it uses the modulo to determine if the schedule must be run or not. The second variable behind the slash lets you determine in which cycle of days/weeks a job should be run. The first part determines on which day/week the job should be run first. E.g. if you want to run a backup in a 5-week-cycle, starting on week 3, you set it up as w03/w05.

Schedule Examples: modulo
Schedule {
  Name = "Odd Days"
  Run = 1/2 at 23:10
}

Schedule {
  Name = "Even Days"
  Run = 2/2 at 23:10
}

Schedule {
  Name = "On the 3rd week in a 5-week-cycle"
  Run = w03/w05 at 23:10
}

Schedule {
  Name = "Odd Weeks"
  Run = w01/w02 at 23:10
}

Schedule {
  Name = "Even Weeks"
  Run = w02/w02 at 23:10
}

2.3.4.1. Technical Notes on Schedules

[TAG=Schedule->Technical Notes on Schedules]

Internally Bareos keeps a schedule as a bit mask. There are six masks and a minute field to each schedule. The masks are hour, day of the month (mday), month, day of the week (wday), week of the month (wom), and week of the year (woy). The schedule is initialized to have the bits of each of these masks set, which means that at the beginning of every hour, the job will run. When you specify a month for the first time, the mask will be cleared and the bit corresponding to your selected month will be selected. If you specify a second month, the bit corresponding to it will also be added to the mask. Thus when Bareos 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.

For any schedule you have defined, you can see how these bits are set by doing a 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).

2.3.5. FileSet Resource

[TAG=Resource->FileSet] [TAG=FileSet->Resource]

The FileSet resource defines what files are to be included or excluded in a backup job. A FileSet resource is required for each backup Job. It consists of a list of files or directories to be included, a list of files or directories to be excluded and the various backup options such as compression, encryption, and signatures that are to be applied to each file.

Any change to the list of the included files will cause Bareos to automatically create a new FileSet (defined by the name and an MD5 checksum of the Include/Exclude contents). Each time a new FileSet is created, Bareos will ensure that the next backup is always a Full save.

begin{description}

resourceDirective{Dir}{FileSet}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{FileSet}{Enable VSS}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{FileSet}{Exclude}{dt{IncludeExcludeItem}}{}{}{}{}

resourceDirective{Dir}{FileSet}{Ignore File Set Changes}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{FileSet}{Include}{dt{IncludeExcludeItem}}{}{}{}{}

resourceDirective{Dir}{FileSet}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

end{description}

2.3.5.1. FileSet Include Ressource

The Include resource must contain a list of directories and/or files to be processed in the backup job.

Normally, all files found in all subdirectories of any directory in the Include File list will be backed up. Note, see below for the definition of <file-list>. The Include resource may also contain one or more Options resources that specify options such as compression to be applied to all or any subset of the files found when processing the file-list for backup. Please see below for more details concerning Options resources.

There can be any number of Include resources within the FileSet, each having its own list of directories or files to be backed up and the backup options defined by one or more Options resources.

Please take note of the following items in the FileSet syntax:

  1. There is no equal sign (=) after the Include and before the opening brace ({). The same is true for the Exclude.
  2. Each directory (or filename) to be included or excluded is preceded by a File =. Previously they were simply listed on separate lines.
  3. The Exclude resource does not accept Options.
  4. When using wild-cards or regular expressions, directory names are always terminated with a slash (/) and filenames have no trailing slash.
begin{description}
directive{dir}{File}{ filename textbardirname textbartextbar command textbartextbackslashtextless includefile-client textbartextless includefile-server }{}{}{}

The file list consists of one file or directory name per line. Directory names should be specified without a trailing slash with Unix path notation.

Windows users, please take note to specify directories (even c:/…) in Unix path notation. If you use Windows conventions, you will most likely not be able to restore your files due to the fact that the Windows path separator was defined as an escape character long before Windows existed, and Bareos adheres to that convention (i.e. means the next character appears as itself).

You should always specify a full path for every directory and file that you list in the FileSet. In addition, on Windows machines, you should {bf always} prefix the directory or filename with the drive specification (e.g. {bf c:/xxx}) using Unix directory name separators (forward slash). The drive letter itself can be upper or lower case (e.g. c:/xxx or C:/xxx).

Bareos’s default for processing directories is to recursively descend in the directory saving all files and subdirectories. Bareos will not by default cross filesystems (or mount points in Unix parlance). This means that if you specify the root partition (e.g. {bf /}), Bareos will save only the root partition and not any of the other mounted filesystems. Similarly on Windows systems, you must explicitly specify each of the drives you want saved (e.g. {bf c:/} and {bf d:/} …). In addition, at least for Windows systems, you will most likely want to enclose each specification within double quotes particularly if the directory (or file) name contains spaces. The {bf df} command on Unix systems will show you which mount points you must specify to save everything. See below for an example.

Take special care not to include a directory twice or Bareos will backup the same files two times wasting a lot of space on your archive device. Including a directory twice is very easy to do. For example:

begin{verbatim}begin{bconfig}{File Set}
Include {
Options {
compression=GZIP

} File = / File = /usr

}

end{bconfig}end{verbatim} on a Unix system where /usr is a subdirectory (rather than a mounted filesystem) will cause /usr to be backed up twice.

{bf <file-list>} is a list of directory and/or filename names specified with a {bf File =} directive. To include names containing spaces, enclose the name between double-quotes. Wild-cards are not interpreted in file-lists. They can only be specified in Options resources.

There are a number of special cases when specifying directories and files in a {bf file-list}. They are:

begin{itemize} item Any name preceded by an at-sign (@) is assumed to be the name of a

file, which contains a list of files each preceded by a “File =”. The named file is read once when the configuration file is parsed during the Director startup. Note, that the file is read on the Director’s machine and not on the Client’s. In fact, the @filename can appear anywhere within a configuration file where a token would be read, and the contents of the named file will be logically inserted in the place of the @filename. What must be in the file depends on the location the @filename is specified in the conf file. For example:

begin{verbatim}begin{bconfig}{File Set with Include File} Include {

Options {
compression=GZIP

} @/home/files/my-files

} end{bconfig}end{verbatim}

item Any name beginning with a vertical bar (|) is assumed to

be the name of a program. This program will be executed on the Director’s machine at the time the Job starts (not when the Director reads the configuration file), and any output from that program will be assumed to be a list of files or directories, one per line, to be included. Before submitting the specified command Bareos will performe character substitution.

This allows you to have a job that, for example, includes all the local partitions even if you change the partitioning by adding a disk. The examples below show you how to do this. However, please note two things: \ 1. if you want the local filesystems, you probably should be using the {bf fstype} directive and set {bf onefs=no}. \

2. the exact syntax of the command needed in the examples below is very system dependent. For example, on recent Linux systems, you may need to add the -P option, on FreeBSD systems, the options will be different as well.

In general, you will need to prefix your command or commands with a {bf sh -c} so that they are invoked by a shell. This will not be the case if you are invoking a script as in the second example below. Also, you must take care to escape (precede with a textbackslash{}) wild-cards, shell character, and to ensure that any spaces in your command are escaped as well. If you use a single quotes (‘) within a double quote (“), Bareos will treat everything between the single quotes as one field so it will not be necessary to escape the spaces. In general, getting all the quotes and escapes correct is a real pain as you can see by the next example. As a consequence, it is often easier to put everything in a file and simply use the file name within Bareos. In that case the {bf sh -c} will not be necessary providing the first line of the file is {bf #!/bin/sh}.

As an example:

begin{verbatim}begin{bconfig}{File Set with inline script} Include {

Options {
signature = SHA1

} File = “|sh -c ‘df -l | grep “^/dev/hd[ab]” | grep -v “.*/tmp” | awk “{print \$6}”’”

} end{bconfig}end{verbatim} % workaround for kile editor

will produce a list of all the local partitions on a Linux system. Quoting is a real problem because you must quote for Bareos which consists of preceding every textbackslash{} and every ” with a textbackslash{}, and you must also quote for the shell command. In the end, it is probably easier just to execute a script file with:

begin{verbatim}begin{bconfig}{File Set with external script} Include {

Options {
signature=MD5

} File = “|my_partitions”

} end{bconfig}end{verbatim}

where my_partitions has:

begin{verbatim} #!/bin/sh df -l | grep “^/dev/hd[ab]” | grep -v “.*/tmp”

awk “{print $6}”

end{verbatim}

If the vertical bar (verb+|+) in front of my_partitions is preceded by a backslash as in textbackslash{}verb+|+, the program will be executed on the Client’s machine instead of on the Director’s machine. Please note that if the filename is given within quotes, you will need to use two slashes. An example, provided by John Donagher, that backs up all the local UFS partitions on a remote system is:

begin{verbatim}begin{bconfig}{File Set with inline script in quotes} FileSet {

Name = “All local partitions” Include {

Options {
signature=SHA1 onefs=yes

} File = “\|bash -c “df -klF ufs | tail +2 | awk ‘{print $6}’”“

}

} end{bconfig}end{verbatim}

The above requires two backslash characters after the double quote (one preserves the next one). If you are a Linux user, just change the {bf ufs} to {bf ext3} (or your preferred filesystem type), and you will be in business.

If you know what filesystems you have mounted on your system, e.g. for Linux only using ext2, ext3 or ext4, you can backup all local filesystems using something like:

begin{verbatim}begin{bconfig}{File Set to backup all extfs partions} Include {

Options {
signature = SHA1 onfs=no fstype=ext2

} File = /

} end{bconfig}end{verbatim}

item Any file-list item preceded by a less-than sign (<) will be taken
to be a file. This file will be read on the Director’s machine (see below for doing it on the Client machine) at the time the Job starts, and the data will be assumed to be a list of directories or files, one per line, to be included. The names should start in column 1 and should not be quoted even if they contain spaces. This feature allows you to modify the external file and change what will be saved without stopping and restarting Bareos as would be necessary if using the @ modifier noted above. For example:

begin{verbatim} Include {

Options {
signature = SHA1

} File = “</home/files/local-filelist”

} end{verbatim}

If you precede the less-than sign (<) with a backslash as in textbackslash{}<, the file-list will be read on the Client machine instead of on the Director’s machine. Please note that if the filename is given within quotes, you will need to use two slashes.

begin{verbatim} Include {

Options {
signature = SHA1

} File = “\</home/xxx/filelist-on-client”

} end{verbatim}

item
[TAG=Backup->Partitions] [TAG=Backup->Raw Partitions] If you explicitly specify a block device such as {bf /dev/hda1}, then

Bareos will assume that this is a raw partition to be backed up. In this case, you are strongly urged to specify a {bf sparse=yes} include option, otherwise, you will save the whole partition rather than just the actual data that the partition contains. For example:

begin{verbatim}begin{bconfig}{Backup Raw Partitions} Include {

Options {
signature=MD5 sparse=yes

} File = /dev/hd6

} end{bconfig}end{verbatim}

will backup the data in device /dev/hd6. Note, the {bf /dev/hd6} must be the raw partition itself. Bareos will not back it up as a raw device if you specify a symbolic link to a raw device such as my be created by the LVM Snapshot utilities.
item A file-list may not contain wild-cards. Use directives in the
Options resource if you wish to specify wild-cards or regular expression matching.

end{itemize}

directive{dir}{Exclude Dir Containing}{filename}{}{}{}

This directive can be added to the Include section of the FileSet resource. If the specified filename ({bf filename-string}) is found on the Client in any directory to be backed up, the whole directory will be ignored (not backed up). We recommend to use the filename .nobackup, as it is a hidden file on unix systems, and explains what is the purpose of the file.

For example:

begin{verbatim}begin{bconfig}{Exlude Directories containing the file .nobackup} # List of files to be backed up FileSet {

Name = “MyFileSet” Include {

Options {
signature = MD5

} File = /home Exclude Dir Containing = .nobackup

}

} end{bconfig}end{verbatim}

But in /home, there may be hundreds of directories of users and some people want to indicate that they don’t want to have certain directories backed up. For example, with the above FileSet, if the user or sysadmin creates a file named {bf .nobackup} in specific directories, such as

begin{verbatim} /home/user/www/cache/.nobackup /home/user/temp/.nobackup end{verbatim}

then Bareos will not backup the two directories named:

begin{verbatim} /home/user/www/cache /home/user/temp end{verbatim}

NOTE: subdirectories will not be backed up. That is, the directive applies to the two directories in question and any children (be they files, directories, etc).

directive{dir}{Plugin}{plugin-name:plugin-parameter1:plugin-parameter2:…}{}{}{}

Instead of only specifying files, a file set can also use plugins. Plugins are additional libraries that handle specific requirements. The purpose of plugins is to provide an interface to any system program for backup and restore. That allows you, for example, to do database backups without a local dump.

The syntax and semantics of the Plugin directive require the first part of the string up to the colon to be the name of the plugin. Everything after the first colon is ignored by the File daemon but is passed to the plugin. Thus the plugin writer may define the meaning of the rest of the string as he wishes.

For more information, see File Daemon Plugins.

The program bpluginfo can be used, to retrieve information about a specific plugin.

Note: It is also possible to define more than one plugin directive in a FileSet to do several database dumps at once.

directive{dir}{Options}{…}{}{}{}
See the FileSet Options Ressource section.

end{description}

FileSet Options Ressource

The Options resource is optional, but when specified, it will contain a list of keyword=value options to be applied to the file-list. See below for the definition of file-list. Multiple Options resources may be specified one after another. As the files are found in the specified directories, the Options will applied to the filenames to determine if and how the file should be backed up. The wildcard and regular expression pattern matching parts of the Options resources are checked in the order they are specified in the FileSet until the first one that matches. Once one matches, the compression and other flags within the Options specification will apply to the pattern matched.

A key point is that in the absence of an Option or no other Option is matched, every file is accepted for backing up. This means that if you want to exclude something, you must explicitly specify an Option with an exclude = yes and some pattern matching.

Once Bareos determines that the Options resource matches the file under consideration, that file will be saved without looking at any other Options resources that may be present. This means that any wild cards must appear before an Options resource without wild cards.

If for some reason, Bareos checks all the Options resources to a file under consideration for backup, but there are no matches (generally because of wild cards that don’t match), Bareos as a default will then backup the file. This is quite logical if you consider the case of no Options clause is specified, where you want everything to be backed up, and it is important to keep in mind when excluding as mentioned above.

However, one additional point is that in the case that no match was found, Bareos will use the options found in the last Options resource. As a consequence, if you want a particular set of “default” options, you should put them in an Options resource after any other Options.

It is a good idea to put all your wild-card and regex expressions inside double quotes to prevent conf file scanning problems.

This is perhaps a bit overwhelming, so there are a number of examples included below to illustrate how this works.

You find yourself using a lot of Regex statements, which will cost quite a lot of CPU time, we recommend you simplify them if you can, or better yet convert them to Wild statements which are much more efficient.

The directives within an Options resource may be one of the following:

begin{description}
xdirective{Dir}{}{AutoExclude}{dtYesNo}{}{yes}{14.2.2}{%
Automatically exclude files not intended for backup. Currently only used for Windows, to exclude files defined in the registry key registrykey{HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlBackupRestoreFilesNotToBackup}, see section nameref{FilesNotToBackup}.

}

item [compression=<GZIP|GZIP1|…|GZIP9|LZO|LZFAST|LZ4|LZ4HC>] \

[TAG=compression] [TAG=Directive->compression]

Configures the software compression to be used by the File Daemon. The compression is done on a file by file basis. %If there is a problem reading the tape in a single %record of a file, it will at most affect that file and none of the other %files on the tape.

Software compression gets important if you are writing to a device that does not support compression by itself (e.g. hard disks). Otherwise, all modern tape drive do support hardware compression. Software compression can also be helpful to reduce the required network bandwidth, as compression is done on the File Daemon. However, using Bareos software compression and device hardware compression together is not advised, as trying to compress precompressed data is a very CPU-intense task and probably end up in even larger data.

You can overwrite this option per Storage resource using the Allow Compression (Dir->Storage) = no option.

begin{description}

item [compression=GZIP] \ All files saved will be software compressed using the GNU ZIP compression format.

Specifying {bf GZIP} uses the default compression level 6 (i.e. {bf GZIP} is identical to {bf GZIP6}). If you want a different compression level (1 through 9), you can specify it by appending the level number with no intervening spaces to {bf GZIP}. Thus {bf compression=GZIP1} would give minimum compression but the fastest algorithm, and {bf compression=GZIP9} would give the highest level of compression, but requires more computation. According to the GZIP documentation, compression levels greater than six generally give very little extra compression and are rather CPU intensive.

item [compression=LZO] \ All files saved will be software compressed using the LZO compression format. The compression is done on a file by file basis by the File daemon. Everything else about GZIP is true for LZO.

LZO provides much faster compression and decompression speed but lower compression ratio than GZIP. If your CPU is fast enough you should be able to compress your data without making the backup duration longer.

Note that Bareos only use one compression level LZO1X-1 specified by LZO.

item [compression=LZFAST] \ All files saved will be software compressed using the LZFAST compression format. The compression is done on a file by file basis by the File daemon. Everything else about GZIP is true for LZFAST.

LZFAST provides much faster compression and decompression speed but lower compression ratio than GZIP. If your CPU is fast enough you should be able to compress your data without making the backup duration longer.

item [compression=LZ4] \ All files saved will be software compressed using the LZ4 compression format. The compression is done on a file by file basis by the File daemon. Everything else about GZIP is true for LZ4.

LZ4 provides much faster compression and decompression speed but lower compression ratio than GZIP. If your CPU is fast enough you should be able to compress your data without making the backup duration longer.

Both LZ4 and LZ4HC have the same decompression speed which is about twice the speed of the LZO compression. So for a restore both LZ4 and LZ4HC are good candidates.

Warning

As LZ4 compression is not supported by Bacula, make sure Compatible (Fd->Client) = no.

item [compression=LZ4HC] \ All files saved will be software compressed using the LZ4HC compression format. The compression is done on a file by file basis by the File daemon. Everything else about GZIP is true for LZ4.

LZ4HC is the High Compression version of the LZ4 compression. It has a higher compression ratio than LZ4 and is more comparable to GZIP-6 in both compression rate and cpu usage.

Both LZ4 and LZ4HC have the same decompression speed which is about twice the speed of the LZO compression. So for a restore both LZ4 and LZ4HC are good candidates.

Warning

As LZ4 compression is not supported by Bacula, make sure Compatible (Fd->Client) = no.

end{description}
item [signature=<MD5|SHA1|SHA256|SHA512>] \
:index:`[TAG=signature] <single: signature>`% :index:`[TAG=Directive->signature] <pair: Directive; signature>`%

It is strongly recommend to use signatures for your backups. Note, only one type of signature can be computed per file.

begin{description}

item [signature=MD5] \ :index:`[TAG=MD5] <single: MD5>`% :index:`[TAG=signature->MD5] <pair: signature; MD5>`% An MD5 signature will be computed for each files saved. Adding this option generates about 5% extra overhead for each file saved. In addition to the additional CPU time, the MD5 signature adds 16 more bytes per file to your catalog.

item [signature=SHA1] \ :index:`[TAG=SHA1] <single: SHA1>`% :index:`[TAG=signature->SHA1] <pair: signature; SHA1>`% An SHA1 signature will be computed for each files saved. The SHA1 algorithm is purported to be some what slower than the MD5 algorithm, but at the same time is significantly better from a cryptographic point of view (i.e. much fewer collisions). The SHA1 signature requires adds 20 bytes per file to your catalog.

item [signature=SHA256] \ :index:`[TAG=SHA256] <single: SHA256>`% :index:`[TAG=signature->SHA256] <pair: signature; SHA256>`%

item [signature=SHA512] \ :index:`[TAG=SHA512] <single: SHA512>`% :index:`[TAG=signature->SHA512] <pair: signature; SHA512>`%

end{description}

item[basejob=<options>] [TAG=basejob] [TAG=Directive->basejob]

The options letters specified are used when running a {bf Backup Level=Full} with BaseJobs. The options letters are the same than in the verify= option below.

item[accurate=<options>] [TAG=Accurate]
[TAG=Directive->accurate] The options letters specified are used when running a {bf Backup Level=Incremental/Differential} in Accurate mode. The options letters are the same than in the verify= option below.

item [verify=<options>] \ [TAG=verify] [TAG=Directive->verify]

The options letters specified are used when running a {bf Verify Level=Catalog} as well as the {bf DiskToCatalog} level job. The options letters may be any combination of the following:

begin{description}

item {bf i} compare the inodes

item {bf p} compare the permission bits

item {bf n} compare the number of links

item {bf u} compare the user id

item {bf g} compare the group id

item {bf s} compare the size

item {bf a} compare the access time

item {bf m} compare the modification time (st_mtime)

item {bf c} compare the change time (st_ctime)

item {bf d} report file size decreases

item {bf 5} compare the MD5 signature

item {bf 1} compare the SHA1 signature

item {bf A} Only for Accurate option, it allows to always backup the file

end{description}

A useful set of general options on the {bf Level=Catalog} or {bf Level=DiskToCatalog} verify is {bf pins5} i.e. compare permission bits, inodes, number of links, size, and MD5 changes.

item [onefs=yes|no] \ [TAG=onefs] [TAG=Directive->onefs]

If set to {bf yes} (the default), {bf Bareos} will remain on a single file system. That is it will not backup file systems that are mounted on a subdirectory. If you are using a *nix system, you may not even be aware that there are several different filesystems as they are often automatically mounted by the OS (e.g. /dev, /net, /sys, /proc, …). Bareos will inform you when it decides not to traverse into another filesystem. This can be very useful if you forgot to backup a particular partition. An example of the informational message in the job report is:

begin{verbatim} rufus-fd: /misc is a different filesystem. Will not descend from / into /misc rufus-fd: /net is a different filesystem. Will not descend from / into /net rufus-fd: /var/lib/nfs/rpc_pipefs is a different filesystem. Will not descend from /var/lib/nfs into /var/lib/nfs/rpc_pipefs rufus-fd: /selinux is a different filesystem. Will not descend from / into /selinux rufus-fd: /sys is a different filesystem. Will not descend from / into /sys rufus-fd: /dev is a different filesystem. Will not descend from / into /dev rufus-fd: /home is a different filesystem. Will not descend from / into /home end{verbatim}

If you wish to backup multiple filesystems, you can explicitly list each filesystem you want saved. Otherwise, if you set the onefs option to {bf no}, Bareos will backup all mounted file systems (i.e. traverse mount points) that are found within the {bf FileSet}. Thus if you have NFS or Samba file systems mounted on a directory listed in your FileSet, they will also be backed up. Normally, it is preferable to set {bf onefs=yes} and to explicitly name each filesystem you want backed up. Explicitly naming the filesystems you want backed up avoids the possibility of getting into a infinite loop recursing filesystems. Another possibility is to use {bf onefs=no} and to set {bf fstype=ext2, …}. See the example below for more details.

If you think that Bareos should be backing up a particular directory and it is not, and you have {bf onefs=no} set, before you complain, please do:

begin{verbatim}
stat / stat <filesystem>

end{verbatim}

where you replace {bf filesystem} with the one in question. If the {bf Device:} number is different for / and for your filesystem, then they are on different filesystems. E.g.

begin{verbatim} stat /

File: `/’ Size: 4096 Blocks: 16 IO Block: 4096 directory

Device: 302h/770d Inode: 2 Links: 26 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2005-11-10 12:28:01.000000000 +0100 Modify: 2005-09-27 17:52:32.000000000 +0200 Change: 2005-09-27 17:52:32.000000000 +0200

stat /net
File: `/home’ Size: 4096 Blocks: 16 IO Block: 4096 directory

Device: 308h/776d Inode: 2 Links: 7 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2005-11-10 12:28:02.000000000 +0100 Modify: 2005-11-06 12:36:48.000000000 +0100 Change: 2005-11-06 12:36:48.000000000 +0100 end{verbatim}

Also be aware that even if you include {bf /home} in your list of files to backup, as you most likely should, you will get the informational message that “/home is a different filesystem” when Bareos is processing the {bf /} directory. This message does not indicate an error. This message means that while examining the {bf File =} referred to in the second part of the message, Bareos will not descend into the directory mentioned in the first part of the message. However, it is possible that the separate filesystem will be backed up despite the message. For example, consider the following FileSet:
begin{verbatim}
File = / File = /var

end{verbatim}

where {bf /var} is a separate filesystem. In this example, you will get a message saying that Bareos will not decend from {bf /} into {bf /var}. But it is important to realise that Bareos will descend into {bf /var} from the second File directive shown above. In effect, the warning is bogus, but it is supplied to alert you to possible omissions from your FileSet. In this example, {bf /var} will be backed up. If you changed the FileSet such that it did not specify {bf /var}, then {bf /var} will not be backed up.

item [honor nodump flag=<yes|no>] \ [TAG=honornodumpflag] [TAG=Directive->honornodumpflag]

If your file system supports the {bf nodump} flag (e. g. most BSD-derived systems) Bareos will honor the setting of the flag when this option is set to {bf yes}. Files having this flag set will not be included in the backup and will not show up in the catalog. For directories with the {bf nodump} flag set recursion is turned off and the directory will be listed in the catalog. If the {bf honor nodump flag} option is not defined or set to {bf no} every file and directory will be eligible for backup.

item [portable=yes|no] \ [TAG=portable] [TAG=Directive->portable]

If set to {bf yes} (default is {bf no}), the Bareos File daemon will backup Win32 files in a portable format, but not all Win32 file attributes will be saved and restored. By default, this option is set to {bf no}, which means that on Win32 systems, the data will be backed up using Windows API calls and on WinNT/2K/XP, all the security and ownership attributes will be properly backed up (and restored). However this format is not portable to other systems – e.g. Unix, Win95/98/Me. When backing up Unix systems, this option is ignored, and unless you have a specific need to have portable backups, we recommend accept the default ({bf no}) so that the maximum information concerning your files is saved.

item [recurse=yes|no] \ [TAG=recurse] [TAG=Directive->recurse]

If set to {bf yes} (the default), Bareos will recurse (or descend) into all subdirectories found unless the directory is explicitly excluded using an {bf exclude} definition. If you set {bf recurse=no}, Bareos will save the subdirectory entries, but not descend into the subdirectories, and thus will not save the files or directories contained in the subdirectories. Normally, you will want the default ({bf yes}).

item [sparse=yes|no] \ [TAG=sparse] [TAG=Directive->sparse]

Enable special code that checks for sparse files such as created by ndbm. The default is {bf no}, so no checks are made for sparse files. You may specify {bf sparse=yes} even on files that are not sparse file. No harm will be done, but there will be a small additional overhead to check for buffers of all zero, and if there is a 32K block of all zeros (see below), that block will become a hole in the file, which may not be desirable if the original file was not a sparse file.

{bf Restrictions:} Bareos reads files in 32K buffers. If the whole buffer is zero, it will be treated as a sparse block and not written to tape. However, if any part of the buffer is non-zero, the whole buffer will be written to tape, possibly including some disk sectors (generally 4098 bytes) that are all zero. As a consequence, Bareos’s detection of sparse blocks is in 32K increments rather than the system block size. If anyone considers this to be a real problem, please send in a request for change with the reason.

If you are not familiar with sparse files, an example is say a file where you wrote 512 bytes at address zero, then 512 bytes at address 1 million. The operating system will allocate only two blocks, and the empty space or hole will have nothing allocated. However, when you read the sparse file and read the addresses where nothing was written, the OS will return all zeros as if the space were allocated, and if you backup such a file, a lot of space will be used to write zeros to the volume. Worse yet, when you restore the file, all the previously empty space will now be allocated using much more disk space. By turning on the {bf sparse} option, Bareos will specifically look for empty space in the file, and any empty space will not be written to the Volume, nor will it be restored. The price to pay for this is that Bareos must search each block it reads before writing it. On a slow system, this may be important. If you suspect you have sparse files, you should benchmark the difference or set sparse for only those files that are really sparse.

You probably should not use this option on files or raw disk devices that are not really sparse files (i.e. have holes in them).

item [readfifo=yes|no] \ [TAG=readfifo] [TAG=Directive->readfifo]

If enabled, tells the Client to read the data on a backup and write the data on a restore to any FIFO (pipe) that is explicitly mentioned in the FileSet. In this case, you must have a program already running that writes into the FIFO for a backup or reads from the FIFO on a restore. This can be accomplished with the {bf RunBeforeJob} directive. If this is not the case, Bareos will hang indefinitely on reading/writing the FIFO. When this is not enabled (default), the Client simply saves the directory entry for the FIFO.

Normally, when Bareos runs a RunBeforeJob, it waits until that script terminates, and if the script accesses the FIFO to write into it, the Bareos job will block and everything will stall. However, Vladimir Stavrinov as supplied tip that allows this feature to work correctly. He simply adds the following to the beginning of the RunBeforeJob script:

begin{verbatim}
exec > /dev/null

end{verbatim}

begin{verbatim}begin{bconfig}{FileSet with Fifo} Include {

Options {
signature=SHA1 readfifo=yes

} File = /home/abc/fifo

} end{bconfig}end{verbatim}

This feature can be used to do a “hot” database backup. You can use the {bf RunBeforeJob} to create the fifo and to start a program that dynamically reads your database and writes it to the fifo. Bareos will then write it to the Volume.

During the restore operation, the inverse is true, after Bareos creates the fifo if there was any data stored with it (no need to explicitly list it or add any options), that data will be written back to the fifo. As a consequence, if any such FIFOs exist in the fileset to be restored, you must ensure that there is a reader program or Bareos will block, and after one minute, Bareos will time out the write to the fifo and move on to the next file.

If you are planing to use a Fifo for backup, better take a look to the bpipe Plugin section.

item [noatime=yes|no] \ [TAG=noatime] [TAG=Directive->noatime]

If enabled, and if your Operating System supports the O_NOATIME file open flag, Bareos will open all files to be backed up with this option. It makes it possible to read a file without updating the inode atime (and also without the inode ctime update which happens if you try to set the atime back to its previous value). It also prevents a race condition when two programs are reading the same file, but only one does not want to change the atime. It’s most useful for backup programs and file integrity checkers (and Bareos can fit on both categories).

This option is particularly useful for sites where users are sensitive to their MailBox file access time. It replaces both the {bf keepatime} option without the inconveniences of that option (see below).

If your Operating System does not support this option, it will be silently ignored by Bareos.

item [mtimeonly=yes|no] \ [TAG=mtimeonly] [TAG=Directive->mtimeonly]

If enabled, tells the Client that the selection of files during Incremental and Differential backups should based only on the st_mtime value in the stat() packet. The default is {bf no} which means that the selection of files to be backed up will be based on both the st_mtime and the st_ctime values. In general, it is not recommended to use this option.

item [keepatime=yes|no] \ [TAG=keepatime] [TAG=Directive->keepatime]

The default is {bf no}. When enabled, Bareos will reset the st_atime (access time) field of files that it backs up to their value prior to the backup. This option is not generally recommended as there are very few programs that use st_atime, and the backup overhead is increased because of the additional system call necessary to reset the times. However, for some files, such as mailboxes, when Bareos backs up the file, the user will notice that someone (Bareos) has accessed the file. In this, case keepatime can be useful. (I’m not sure this works on Win32).

Note, if you use this feature, when Bareos resets the access time, the change time (st_ctime) will automatically be modified by the system, so on the next incremental job, the file will be backed up even if it has not changed. As a consequence, you will probably also want to use {bf mtimeonly = yes} as well as keepatime (thanks to Rudolf Cejka for this tip).

item [checkfilechanges=yes|no] \ [TAG=checkfilechanges] [TAG=Directive->checkfilechanges]

If enabled, the Client will check size, age of each file after their backup to see if they have changed during backup. If time or size mismatch, an error will raise.
begin{verbatim}
zog-fd: Client1.2007-03-31_09.46.21 Error: /tmp/test mtime changed during backup.

end{verbatim}

In general, it is recommended to use this option.

item [hardlinks=yes|no] \ [TAG=hardlinks] [TAG=Directive->hardlinks]

When enabled (default), this directive will cause hard links to be backed up. However, the File daemon keeps track of hard linked files and will backup the data only once. The process of keeping track of the hard links can be quite expensive if you have lots of them (tens of thousands or more). This doesn’t occur on normal Unix systems, but if you use a program like BackupPC, it can create hundreds of thousands, or even millions of hard links. Backups become very long and the File daemon will consume a lot of CPU power checking hard links. In such a case, set {bf hardlinks=no} and hard links will not be backed up. Note, using this option will most likely backup more data and on a restore the file system will not be restored identically to the original.

item [wild=<string>] \ [TAG=wild] [TAG=Directive->wild]

Specifies a wild-card string to be applied to the filenames and directory names. Note, if {bf Exclude} is not enabled, the wild-card will select which files are to be included. If {bf Exclude=yes} is specified, the wild-card will select which files are to be excluded. Multiple wild-card directives may be specified, and they will be applied in turn until the first one that matches. Note, if you exclude a directory, no files or directories below it will be matched.

You may want to test your expressions prior to running your backup by using the bwild program. You can also test your full FileSet definition by using the estimate command. It is recommended to enclose the string in double quotes.

item [wilddir=<string>] \ [TAG=wilddir] [TAG=Directive->wilddir]

Specifies a wild-card string to be applied to directory names only. No filenames will be matched by this directive. Note, if {bf Exclude} is not enabled, the wild-card will select directories to be included. If {bf Exclude=yes} is specified, the wild-card will select which directories are to be excluded. Multiple wild-card directives may be specified, and they will be applied in turn until the first one that matches. Note, if you exclude a directory, no files or directories below it will be matched.

It is recommended to enclose the string in double quotes.

You may want to test your expressions prior to running your backup by using the bwild program. You can also test your full FileSet definition by using the estimate command.

item [wildfile=<string>] \ [TAG=wildfile] [TAG=Directive->wildfile]

Specifies a wild-card string to be applied to non-directories. That is no directory entries will be matched by this directive. However, note that the match is done against the full path and filename, so your wild-card string must take into account that filenames are preceded by the full path. If {bf Exclude} is not enabled, the wild-card will select which files are to be included. If {bf Exclude=yes} is specified, the wild-card will select which files are to be excluded. Multiple wild-card directives may be specified, and they will be applied in turn until the first one that matches.

It is recommended to enclose the string in double quotes.

You may want to test your expressions prior to running your backup by using the bwild program. You can also test your full FileSet definition by using the estimate command. An example of excluding with the WildFile option on Win32 machines is presented below.

item [regex=<string>] \ [TAG=regex] [TAG=Directive->regex]

Specifies a POSIX extended regular expression to be applied to the filenames and directory names, which include the full path. If {bf Exclude} is not enabled, the regex will select which files are to be included. If {bf Exclude=yes} is specified, the regex will select which files are to be excluded. Multiple regex directives may be specified within an Options resource, and they will be applied in turn until the first one that matches. Note, if you exclude a directory, no files or directories below it will be matched.

It is recommended to enclose the string in double quotes.

The regex libraries differ from one operating system to another, and in addition, regular expressions are complicated, so you may want to test your expressions prior to running your backup by using the bregex program. You can also test your full FileSet definition by using the estimate command.

You find yourself using a lot of Regex statements, which will cost quite a lot of CPU time, we recommend you simplify them if you can, or better yet convert them to Wild statements which are much more efficient.

item [regexfile=<string>] \ [TAG=regexfile] [TAG=Directive->regexfile]

Specifies a POSIX extended regular expression to be applied to non-directories. No directories will be matched by this directive. However, note that the match is done against the full path and filename, so your regex string must take into account that filenames are preceded by the full path. If {bf Exclude} is not enabled, the regex will select which files are to be included. If {bf Exclude=yes} is specified, the regex will select which files are to be excluded. Multiple regex directives may be specified, and they will be applied in turn until the first one that matches.

It is recommended to enclose the string in double quotes.

The regex libraries differ from one operating system to another, and in addition, regular expressions are complicated, so you may want to test your expressions prior to running your backup by using the bregex program.

item [regexdir=<string>] \ [TAG=regexdir] [TAG=Directive->regexdir]

Specifies a POSIX extended regular expression to be applied to directory names only. No filenames will be matched by this directive. Note, if {bf Exclude} is not enabled, the regex will select directories files are to be included. If {bf Exclude=yes} is specified, the regex will select which files are to be excluded. Multiple regex directives may be specified, and they will be applied in turn until the first one that matches. Note, if you exclude a directory, no files or directories below it will be matched.

It is recommended to enclose the string in double quotes.

The regex libraries differ from one operating system to another, and in addition, regular expressions are complicated, so you may want to test your expressions prior to running your backup by using the bregex program.

xdirective{dir}{}{Exclude}{dtYesNo}{}{no}{}{%
When enabled, any files matched within the Options will be excluded from the backup.

}

item [aclsupport=yes|no] \ [TAG=aclsupport] [TAG=Directive->aclsupport]

The default is {bf yes} since Bareos 18.2. If this option is set to yes, and you have the POSIX {bf libacl} installed on your Linux system, Bareos will backup the file and directory Unix Access Control Lists (ACL) as defined in IEEE Std 1003.1e draft 17 and “POSIX.1e” (abandoned). This feature is available on Unix systems only and requires the Linux ACL library. Bareos is automatically compiled with ACL support if the {bf libacl} library is installed on your Linux system (shown in config.out). While restoring the files Bareos will try to restore the ACLs, if there is no ACL support available on the system, Bareos restores the files and directories but not the ACL information. Please note, if you backup an EXT3 or XFS filesystem with ACLs, then you restore them to a different filesystem (perhaps reiserfs) that does not have ACLs, the ACLs will be ignored.

For other operating systems there is support for either POSIX ACLs or the more extensible NFSv4 ACLs.

The ACL stream format between Operation Systems is not compatible so for example an ACL saved on Linux cannot be restored on Solaris.

The following Operating Systems are currently supported:

begin{enumerate} item AIX (pre-5.3 (POSIX) and post 5.3 (POSIX and NFSv4) ACLs) item Darwin item FreeBSD (POSIX and NFSv4/ZFS ACLs) item HPUX item IRIX item Linux item Solaris (POSIX and NFSv4/ZFS ACLs) item Tru64 end{enumerate}

item [xattrsupport=yes|no] \ [TAG=xattrsupport] [TAG=Directive->xattrsupport]

The default is {bf yes} since Bareos 18.2. If this option is set to yes, and your operating system support either so called Extended Attributes or Extensible Attributes Bareos will backup the file and directory XATTR data. This feature is available on UNIX only and depends on support of some specific library calls in libc.

The XATTR stream format between Operating Systems is {bf not} compatible so an XATTR saved on Linux cannot for example be restored on Solaris.

On some operating systems ACLs are also stored as Extended Attributes (Linux, Darwin, FreeBSD) Bareos checks if you have the aclsupport option enabled and if so will not save the same info when saving extended attribute information. Thus ACLs are only saved once.

The following Operating Systems are currently supported:

begin{enumerate} item AIX (Extended Attributes) item Darwin (Extended Attributes) item FreeBSD (Extended Attributes) item IRIX (Extended Attributes) item Linux (Extended Attributes) item NetBSD (Extended Attributes) item Solaris (Extended Attributes and Extensible Attributes) item Tru64 (Extended Attributes) end{enumerate}

item [ignore case=yes|no] \ [TAG=ignore case] [TAG=Directive->ignore case]

The default is {bf no}. On Windows systems, you will almost surely want to set this to {bf yes}. When this directive is set to {bf yes} all the case of character will be ignored in wild-card and regex comparisons. That is an uppercase A will match a lowercase a.

item [fstype=filesystem-type] \ [TAG=fstype] [TAG=Directive->fstype]

This option allows you to select files and directories by the filesystem type. The permitted filesystem-type names are:

ext2, jfs, ntfs, proc, reiserfs, xfs, usbdevfs, sysfs, smbfs, iso9660.

You may have multiple Fstype directives, and thus permit matching of multiple filesystem types within a single Options resource. If the type specified on the fstype directive does not match the filesystem for a particular directive, that directory will not be backed up. This directive can be used to prevent backing up non-local filesystems. Normally, when you use this directive, you would also set {bf onefs=no} so that Bareos will traverse filesystems.

This option is not implemented in Win32 systems.

item [DriveType=Windows-drive-type] \ [TAG=DriveType] [TAG=Directive->DriveType]

This option is effective only on Windows machines and is somewhat similar to the Unix/Linux {bf fstype} described above, except that it allows you to select what Windows drive types you want to allow. By default all drive types are accepted.

The permitted drivetype names are:

removable, fixed, remote, cdrom, ramdisk

You may have multiple Driveype directives, and thus permit matching of multiple drive types within a single Options resource. If the type specified on the drivetype directive does not match the filesystem for a particular directive, that directory will not be backed up. This directive can be used to prevent backing up non-local filesystems. Normally, when you use this directive, you would also set {bf onefs=no} so that Bareos will traverse filesystems.

This option is not implemented in Unix/Linux systems.

item [hfsplussupport=yes|no] \ [TAG=hfsplussupport] [TAG=Directive->hfsplussupport]

This option allows you to turn on support for Mac OSX HFS plus finder information.

item [strippath=<integer>] \ [TAG=strippath] [TAG=Directive->strippath]

This option will cause {bf integer} paths to be stripped from the front of the full path/filename being backed up. This can be useful if you are migrating data from another vendor or if you have taken a snapshot into some subdirectory. This directive can cause your filenames to be overlayed with regular backup data, so should be used only by experts and with great care.

item [size=sizeoption] \ [TAG=size] [TAG=Directive->size]

This option will allow you to select files by their actual size. You can select either files smaller than a certain size or bigger then a certain size, files of a size in a certain range or files of a size which is within 1 % of its actual size.

The following settings can be used:

begin{enumerate} item {bf <size>-<size>} - Select file in range size - size. item {bf <size} - Select files smaller than size. item {bf >size} - Select files bigger than size. item {bf size} - Select files which are within 1 % of size. end{enumerate}

item [shadowing=none|localwarn|localremove|globalwarn|globalremove] \ [TAG=shadowing] [TAG=Directive->shadowing]

The default is {bf none}. This option performs a check within the fileset for any file-list entries which are shadowing each other. Lets say you specify / and /usr but /usr is not a separate filesystem. Then in the normal situation both / and /usr would lead to data being backed up twice.

The following settings can be used:

begin{enumerate} item none - Do NO shadowing check item localwarn - Do shadowing check within one include block and warn item localremove - Do shadowing check within one include block and remove duplicates item globalwarn - Do shadowing check between all include blocks and warn item globalremove - Do shadowing check between all include blocks and remove duplicates end{enumerate}

The local and global part of the setting relate to the fact if the check should be performed only within one include block (local) or between multiple include blocks of the same fileset (global). The warn and remove part of the keyword sets the action e.g. warn the user about shadowing or remove the entry shadowing the other.

Example for a fileset resource with fileset shadow warning enabled:

begin{verbatim}begin{bconfig}{FileSet resource with fileset shadow warning enabled} FileSet {

Name = “Test Set” Include {

Options {
signature = MD5 shadowing = localwarn

}

File = / File = /usr }

} end{bconfig}end{verbatim}

item [meta=tag] \ [TAG=meta] [TAG=Directive->meta]

This option will add a meta tag to a fileset. These meta tags are used by the Native NDMP protocol to pass NDMP backup or restore environment variables via the Data Management Agent (DMA) in Bareos to the remote NDMP Data Agent. You can have zero or more metatags which are all passed to the remote NDMP Data Agent.

end{description}

2.3.5.2. FileSet Exclude Ressource

[TAG=Excluding Files and Directories]

FileSet Exclude-Ressources very similar to Include-Ressources, except that they only allow following directives:

begin{description}

% file | directoy | |command | <includefile-client | <includefile-server xdirective{dir}{}{File}{

filename textbardirectory textbartextbar command textbartextbackslashtextless includefile-client textbartextless includefile-server }{}{}{}{%

Files to exclude are descripted in the same way as at the nameref{fileset-include}.

} end{description}

For example:

FileSet using Exclude
FileSet {
  Name = Exclusion_example
  Include {
    Options {
      Signature = SHA1
    }
    File = /
    File = /boot
    File = /home
    File = /rescue
    File = /usr
  }
  Exclude {
    File = /proc
    File = /tmp                          # Don't add trailing /
    File = .journal
    File = .autofsck
  }
}

Another way to exclude files and directories is to use the Exclude option from the Include section.

2.3.5.3. FileSet Examples

[TAG=Example->FileSet] [TAG=FileSet->Example]

The following is an example of a valid FileSet resource definition. Note, the first Include pulls in the contents of the file /etc/backup.list when Bareos is started (i.e. the @), and that file must have each filename to be backed up preceded by a File = and on a separate line.

FileSet using import
FileSet {
  Name = "Full Set"
  Include {
    Options {
      Compression=GZIP
      signature=SHA1
      Sparse = yes
    }
    @/etc/backup.list
  }
  Include {
     Options {
        wildfile = "*.o"
        wildfile = "*.exe"
        Exclude = yes
     }
     File = /root/myfile
     File = /usr/lib/another_file
  }
}

In the above example, all the files contained in /etc/backup.list will be compressed with GZIP compression, an SHA1 signature will be computed on the file’s contents (its data), and sparse file handling will apply.

The two directories /root/myfile and /usr/lib/another_file will also be saved without any options, but all files in those directories with the extensions .o and .exe will be excluded.

Let’s say that you now want to exclude the directory /tmp. The simplest way to do so is to add an exclude directive that lists /tmp. The example above would then become:

extended FileSet excluding /tmp
FileSet {
  Name = "Full Set"
  Include {
    Options {
      Compression=GZIP
      signature=SHA1
      Sparse = yes
    }
    @/etc/backup.list
  }
  Include {
     Options {
        wildfile = "*.o"
        wildfile = "*.exe"
        Exclude = yes
     }
     File = /root/myfile
     File = /usr/lib/another_file
  }
  Exclude {
     File = /tmp                          # don't add trailing /
  }
}

You can add wild-cards to the File directives listed in the Exclude directory, but you need to take care because if you exclude a directory, it and all files and directories below it will also be excluded.

Now lets take a slight variation on the above and suppose you want to save all your whole filesystem except /tmp. The problem that comes up is that Bareos will not normally cross from one filesystem to another. Doing a df command, you get the following output:

df
<command>df</command>
Filesystem      1k-blocks      Used Available Use% Mounted on
/dev/hda5         5044156    439232   4348692  10% /
/dev/hda1           62193      4935     54047   9% /boot
/dev/hda9        20161172   5524660  13612372  29% /home
/dev/hda2           62217      6843     52161  12% /rescue
/dev/hda8         5044156     42548   4745376   1% /tmp
/dev/hda6         5044156   2613132   2174792  55% /usr
none               127708         0    127708   0% /dev/shm
//minimatou/c$   14099200   9895424   4203776  71% /mnt/mmatou
lmatou:/          1554264    215884   1258056  15% /mnt/matou
lmatou:/home      2478140   1589952    760072  68% /mnt/matou/home
lmatou:/usr       1981000   1199960    678628  64% /mnt/matou/usr
lpmatou:/          995116    484112    459596  52% /mnt/pmatou
lpmatou:/home    19222656   2787880  15458228  16% /mnt/pmatou/home
lpmatou:/usr      2478140   2038764    311260  87% /mnt/pmatou/usr
deuter:/          4806936     97684   4465064   3% /mnt/deuter
deuter:/home      4806904    280100   4282620   7% /mnt/deuter/home
deuter:/files    44133352  27652876  14238608  67% /mnt/deuter/files

And we see that there are a number of separate filesystems (/ /boot /home /rescue /tmp and /usr not to mention mounted systems). If you specify only / in your Include list, Bareos will only save the Filesystem /dev/hda5. To save all filesystems except /tmp with out including any of the Samba or NFS mounted systems, and explicitly excluding a /tmp, /proc, .journal, and .autofsck, which you will not want to be saved and restored, you can use the following:

FileSet mount points
FileSet {
  Name = Include_example
  Include {
    Options {
       wilddir = /proc
       wilddir = /tmp
       wildfile = "/.journal"
       wildfile = "/.autofsck"
       exclude = yes
    }
    File = /
    File = /boot
    File = /home
    File = /rescue
    File = /usr
  }
}

Since /tmp is on its own filesystem and it was not explicitly named in the Include list, it is not really needed in the exclude list. It is better to list it in the Exclude list for clarity, and in case the disks are changed so that it is no longer in its own partition.

Now, lets assume you only want to backup .Z and .gz files and nothing else. This is a bit trickier because Bareos by default will select everything to backup, so we must exclude everything but .Z and .gz files. If we take the first example above and make the obvious modifications to it, we might come up with a FileSet that looks like this:

Non-working example
FileSet {
  Name = "Full Set"
  Include {                    !!!!!!!!!!!!
     Options {                    This
        wildfile = "*.Z"          example
        wildfile = "*.gz"         doesn't
                                  work
     }                          !!!!!!!!!!!!
     File = /myfile
  }
}

The *.Z and *.gz files will indeed be backed up, but all other files that are not matched by the Options directives will automatically be backed up too (i.e. that is the default rule).

To accomplish what we want, we must explicitly exclude all other files. We do this with the following:

Exclude all except specific wildcards
FileSet {
  Name = "Full Set"
  Include {
     Options {
        wildfile = "*.Z"
        wildfile = "*.gz"
     }
     Options {
        Exclude = yes
        RegexFile = ".*"
     }
     File = /myfile
  }
}

The “trick” here was to add a RegexFile expression that matches all files. It does not match directory names, so all directories in /myfile will be backed up (the directory entry) and any *.Z and *.gz files contained in them. If you know that certain directories do not contain any *.Z or *.gz files and you do not want the directory entries backed up, you will need to explicitly exclude those directories. Backing up a directory entries is not very expensive.

Bareos uses the system regex library and some of them are different on different OSes. The above has been reported not to work on FreeBSD. This can be tested by using the estimate job=job-name listing command in the console and adapting the RegexFile expression appropriately.

Please be aware that allowing Bareos to traverse or change file systems can be very dangerous. For example, with the following:

backup all filesystem below /mnt/matou (use with care)
FileSet {
  Name = "Bad example"
  Include {
    Options {
      onefs=no
    }
    File = /mnt/matou
  }
}

you will be backing up an NFS mounted partition (/mnt/matou), and since onefs is set to no, Bareos will traverse file systems. Now if /mnt/matou has the current machine’s file systems mounted, as is often the case, you will get yourself into a recursive loop and the backup will never end.

As a final example, let’s say that you have only one or two subdirectories of /home that you want to backup. For example, you want to backup only subdirectories beginning with the letter a and the letter b – i.e. /home/a* and /home/b*. Now, you might first try:

Non-working example
FileSet {
  Name = "Full Set"
  Include {
     Options {
        wilddir = "/home/a*"
        wilddir = "/home/b*"
     }
     File = /home
  }
}

The problem is that the above will include everything in /home. To get things to work correctly, you need to start with the idea of exclusion instead of inclusion. So, you could simply exclude all directories except the two you want to use:

Exclude by regex
FileSet {
  Name = "Full Set"
  Include {
     Options {
        RegexDir = "^/home/[c-z]"
        exclude = yes
     }
     File = /home
  }
}

And assuming that all subdirectories start with a lowercase letter, this would work.

An alternative would be to include the two subdirectories desired and exclude everything else:

Include and Exclude
FileSet {
  Name = "Full Set"
  Include {
     Options {
        wilddir = "/home/a*"
        wilddir = "/home/b*"
     }
     Options {
        RegexDir = ".*"
        exclude = yes
     }
     File = /home
  }
}

The following example shows how to back up only the My Pictures directory inside the My Documents directory for all users in C:/Documents and Settings, i.e. everything matching the pattern:

C:/Documents and Settings/*/My Documents/My Pictures/*

To understand how this can be achieved, there are two important points to remember:

Firstly, Bareos walks over the filesystem depth-first starting from the File = lines. It stops descending when a directory is excluded, so you must include all ancestor directories of each directory containing files to be included.

Secondly, each directory and file is compared to the Options clauses in the order they appear in the FileSet. When a match is found, no further clauses are compared and the directory or file is either included or excluded.

The FileSet resource definition below implements this by including specifc directories and files and excluding everything else.

Include/Exclude example
FileSet {
  Name = "AllPictures"

  Include {

    File  = "C:/Documents and Settings"

    Options {
      signature = SHA1
      verify = s1
      IgnoreCase = yes

      # Include all users' directories so we reach the inner ones.  Unlike a
      # WildDir pattern ending in *, this RegExDir only matches the top-level
      # directories and not any inner ones.
      RegExDir = "^C:/Documents and Settings/[^/]+$"

      # Ditto all users' My Documents directories.
      WildDir = "C:/Documents and Settings/*/My Documents"

      # Ditto all users' My Documents/My Pictures directories.
      WildDir = "C:/Documents and Settings/*/My Documents/My Pictures"

      # Include the contents of the My Documents/My Pictures directories and
      # any subdirectories.
      Wild = "C:/Documents and Settings/*/My Documents/My Pictures/*"
    }

    Options {
      Exclude = yes
      IgnoreCase = yes

      # Exclude everything else, in particular any files at the top level and
      # any other directories or files in the users' directories.
      Wild = "C:/Documents and Settings/*"
    }
  }
}

2.3.5.4. Windows FileSets

[TAG=Windows->FileSet] [TAG=FileSet->Windows]

If you are entering Windows file names, the directory path may be preceded by the drive and a colon (as in c:). However, the path separators must be specified in Unix convention (i.e. forward slash (/)). If you wish to include a quote in a file name, precede the quote with a backslash (). For example you might use the following for a Windows machine to backup the “My Documents”

directory:

Windows FileSet
FileSet {
  Name = "Windows Set"
  Include {
    Options {
       WildFile = "*.obj"
       WildFile = "*.exe"
       exclude = yes
     }
     File = "c:/My Documents"
  }
}

For exclude lists to work correctly on Windows, you must observe the following rules:

  • Filenames are case sensitive, so you must use the correct case.
  • To exclude a directory, you must not have a trailing slash on the directory name.
  • If you have spaces in your filename, you must enclose the entire name in double-quote characters (“). Trying to use a backslash before the space will not work.
  • If you are using the old Exclude syntax (noted below), you may not specify a drive letter in the exclude. The new syntax noted above should work fine including driver letters.

Thanks to Thiago Lima for summarizing the above items for us. If you are having difficulties getting includes or excludes to work, you might want to try using the estimate job=xxx listing command documented in the Console chapter of this manual.

On Win32 systems, if you move a directory or file or rename a file into the set of files being backed up, and a Full backup has already been made, Bareos will not know there are new files to be saved during an Incremental or Differential backup (blame Microsoft, not us). To avoid this problem, please copy any new directory or files into the backup area. If you do not have enough disk to copy the directory or files, move them, but then initiate a Full backup.

[TAG=FileSet->Windows Example] [TAG=Windows->FileSet->Example]

The following example demostrates a Windows FileSet. It backups all data from all fixed drives and only excludes some Windows temporary data.

Windows All Drives FileSet
FileSet {
  Name = "Windows All Drives"
  Enable VSS = yes
  Include {
    Options {
      Signature = MD5
      Drive Type = fixed
      IgnoreCase = yes
      WildFile = "[A-Z]:/pagefile.sys"
      WildDir = "[A-Z]:/RECYCLER"
      WildDir = "[A-Z]:/$RECYCLE.BIN"
      WildDir = "[A-Z]:/System Volume Information"
      Exclude = yes
    }
    File = /
  }
}

variable{File = /} includes all Windows drives. Using variable{Drive Type = fixed} excludes drives like USB-Stick or CD-ROM Drive. Using variable{WildDir = “[A-Z]:/RECYCLER”} excludes the backup of the directory RECYCLER from all drives.

2.3.5.5. Testing Your FileSet

[TAG=FileSet->Testing Your] [TAG=Testing Your FileSet]

If you wish to get an idea of what your FileSet will really backup or if your exclusion rules will work correctly, you can test it by using the estimate command.

As an example, suppose you add the following test FileSet:

FileSet for all *.c files
FileSet {
  Name = Test
  Include {
    File = /home/xxx/test
    Options {
       regex = ".*\\.c$"
    }
  }
}

You could then add some test files to the directory /home/xxx/test and use the following command in the console:

estimate
estimate job=<any-job-name> listing client=<desired-client> fileset=Test

to give you a listing of all files that match. In the above example, it should be only files with names ending in .c.

2.3.6. Client Resource

[TAG=Resource->Client] [TAG=Client Resource]

The Client (or FileDaemon) 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.

begin{description}

resourceDirective{Dir}{Client}{Address}{dt{String}}{required}{}{}{}

resourceDirective{Dir}{Client}{Allow Client Connect}{dt{Boolean}}{}{}{deprecated}{Alias of “Connection From Client To Director”.}

resourceDirective{Dir}{Client}{Auth Type}{dt{AuthType}}{}{None}{}{}

resourceDirective{Dir}{Client}{Auto Prune}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Client}{Catalog}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Client}{Connection From Client To Director}{dt{Boolean}}{}{no}{16.2.2}{The Director will accept incoming network connection from this Client.}

resourceDirective{Dir}{Client}{Connection From Director To Client}{dt{Boolean}}{}{yes}{16.2.2}{Let the Director initiate the network connection to the Client.}

resourceDirective{Dir}{Client}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Client}{Enabled}{dt{Boolean}}{}{yes}{}{En- or disable this resource.}

resourceDirective{Dir}{Client}{FD Address}{dt{String}}{}{}{}{Alias for Address.}

resourceDirective{Dir}{Client}{FD Password}{dt{Autopassword}}{}{}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{Client}{FD Port}{dt{Pint32}}{}{8102}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{Client}{File Retention}{dt{Time}}{}{5184000}{}{}

resourceDirective{Dir}{Client}{Hard Quota}{dt{Size64}}{}{0}{}{}

resourceDirective{Dir}{Client}{Heartbeat Interval}{dt{Time}}{}{0}{}{}

resourceDirective{Dir}{Client}{Job Retention}{dt{Time}}{}{15552000}{}{}

resourceDirective{Dir}{Client}{Lan Address}{dt{String}}{}{}{16.2.6}{Sets additional address used for connections between Client and Storage Daemon inside separate network.}

resourceDirective{Dir}{Client}{Maximum Bandwidth Per Job}{dt{Speed}}{}{}{}{}

resourceDirective{Dir}{Client}{Maximum Concurrent Jobs}{dt{Pint32}}{}{1}{}{}

resourceDirective{Dir}{Client}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Client}{NDMP Block Size}{dt{Size32}}{}{64512}{}{}

resourceDirective{Dir}{Client}{NDMP Log Level}{dt{Pint32}}{}{4}{}{}

resourceDirective{Dir}{Client}{NDMP Use LMDB}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Client}{Passive}{dt{Boolean}}{}{no}{13.2.0}{If enabled, the Storage Daemon will initiate the network connection to the Client. If disabled, the Client will initiate the network connection to the Storage Daemon.}

resourceDirective{Dir}{Client}{Password}{dt{Autopassword}}{required}{}{}{}

resourceDirective{Dir}{Client}{Port}{dt{Pint32}}{}{8102}{}{}

resourceDirective{Dir}{Client}{Protocol}{dt{AuthProtocolType}}{}{Native}{13.2.0}{}

resourceDirective{Dir}{Client}{Quota Include Failed Jobs}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Client}{Soft Quota}{dt{Size64}}{}{0}{}{}

resourceDirective{Dir}{Client}{Soft Quota Grace Period}{dt{Time}}{}{0}{}{}

resourceDirective{Dir}{Client}{Strict Quotas}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Client}{TLS Allowed CN}{dt{StringList}}{}{}{}{“Common Name”s (CNs) of the allowed peer certificates.}

resourceDirective{Dir}{Client}{TLS Authenticate}{dt{Boolean}}{}{no}{}{Use TLS only to authenticate, not for encryption.}

resourceDirective{Dir}{Client}{TLS CA Certificate Dir}{dt{Stddirectory}}{}{}{}{Path of a TLS CA certificate directory.}

resourceDirective{Dir}{Client}{TLS CA Certificate File}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS CA certificate(s) file.}

resourceDirective{Dir}{Client}{TLS Certificate}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS certificate.}

resourceDirective{Dir}{Client}{TLS Certificate Revocation List}{dt{Stddirectory}}{}{}{}{Path of a Certificate Revocation List file.}

resourceDirective{Dir}{Client}{TLS Cipher List}{dt{String}}{}{}{}{List of valid TLS Ciphers.}

resourceDirective{Dir}{Client}{TLS DH File}{dt{Stddirectory}}{}{}{}{Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.}

resourceDirective{Dir}{Client}{TLS Enable}{dt{Boolean}}{}{no}{}{Enable TLS support.}

resourceDirective{Dir}{Client}{TLS Key}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded private key. It must correspond to the specified “TLS Certificate”.}

resourceDirective{Dir}{Client}{TLS PSK Enable}{dt{Boolean}}{}{yes}{}{Enable TLS-PSK support.}

resourceDirective{Dir}{Client}{TLS PSK Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicitly sets “TLS-PSK Enable = yes”.}

resourceDirective{Dir}{Client}{TLS Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencrypted connections. Enabling this implicitly sets “TLS Enable = yes”.}

resourceDirective{Dir}{Client}{TLS Verify Peer}{dt{Boolean}}{}{no}{}{If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the “TLS Allowed CN” list.}

resourceDirective{Dir}{Client}{Username}{dt{String}}{}{}{}{}

end{description}

The following is an example of a valid Client resource definition:

Minimal client resource definition in bareos-dir.conf
Client {
  Name = client1-fd
  Address = client1.example.com
  Password = "secret"
}

The following is an example of a Quota Configuration in Client resource:

Quota Configuration in Client resource
Client {
  Name = client1-fd
  Address = client1.example.com
  Password = "secret"

  # Quota
  Soft Quota = 50 mb
  Soft Quota Grace Period = 2 days
  Strict Quotas = Yes
  Hard Quota = 150 mb
  Quota Include Failed Jobs = yes
}

2.3.7. Storage Resource

[TAG=Resource->Storage] [TAG=Storage Resource]

The Storage resource defines which Storage daemons are available for use by the Director.

begin{description}

resourceDirective{Dir}{Storage}{Address}{dt{String}}{required}{}{}{}

resourceDirective{Dir}{Storage}{Allow Compression}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Storage}{Auth Type}{dt{AuthType}}{}{None}{}{}

resourceDirective{Dir}{Storage}{Auto Changer}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Storage}{Cache Status Interval}{dt{Time}}{}{30}{}{}

resourceDirective{Dir}{Storage}{Collect Statistics}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Storage}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Storage}{Device}{dt{Device}}{required}{}{}{}

resourceDirective{Dir}{Storage}{Enabled}{dt{Boolean}}{}{yes}{}{En- or disable this resource.}

resourceDirective{Dir}{Storage}{Heartbeat Interval}{dt{Time}}{}{0}{}{}

resourceDirective{Dir}{Storage}{Lan Address}{dt{String}}{}{}{16.2.6}{Sets additional address used for connections between Client and Storage Daemon inside separate network.}

resourceDirective{Dir}{Storage}{Maximum Bandwidth Per Job}{dt{Speed}}{}{}{}{}

resourceDirective{Dir}{Storage}{Maximum Concurrent Jobs}{dt{Pint32}}{}{1}{}{}

resourceDirective{Dir}{Storage}{Maximum Concurrent Read Jobs}{dt{Pint32}}{}{0}{}{}

resourceDirective{Dir}{Storage}{Media Type}{dt{Strname}}{required}{}{}{}

resourceDirective{Dir}{Storage}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Storage}{NDMP Changer Device}{dt{Strname}}{}{}{16.2.4}{Allows direct control of a Storage Daemon Auto Changer device by the Director. Only used in NDMP_NATIVE environments.}

resourceDirective{Dir}{Storage}{Paired Storage}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Storage}{Password}{dt{Autopassword}}{required}{}{}{}

resourceDirective{Dir}{Storage}{Port}{dt{Pint32}}{}{8103}{}{}

resourceDirective{Dir}{Storage}{Protocol}{dt{AuthProtocolType}}{}{Native}{}{}

resourceDirective{Dir}{Storage}{SD Address}{dt{String}}{}{}{}{Alias for Address.}

resourceDirective{Dir}{Storage}{SD Password}{dt{Autopassword}}{}{}{}{Alias for Password.}

resourceDirective{Dir}{Storage}{SD Port}{dt{Pint32}}{}{8103}{}{Alias for Port.}

resourceDirective{Dir}{Storage}{Sdd Port}{dt{Pint32}}{}{}{deprecated}{}

resourceDirective{Dir}{Storage}{TLS Allowed CN}{dt{StringList}}{}{}{}{“Common Name”s (CNs) of the allowed peer certificates.}

resourceDirective{Dir}{Storage}{TLS Authenticate}{dt{Boolean}}{}{no}{}{Use TLS only to authenticate, not for encryption.}

resourceDirective{Dir}{Storage}{TLS CA Certificate Dir}{dt{Stddirectory}}{}{}{}{Path of a TLS CA certificate directory.}

resourceDirective{Dir}{Storage}{TLS CA Certificate File}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS CA certificate(s) file.}

resourceDirective{Dir}{Storage}{TLS Certificate}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS certificate.}

resourceDirective{Dir}{Storage}{TLS Certificate Revocation List}{dt{Stddirectory}}{}{}{}{Path of a Certificate Revocation List file.}

resourceDirective{Dir}{Storage}{TLS Cipher List}{dt{String}}{}{}{}{List of valid TLS Ciphers.}

resourceDirective{Dir}{Storage}{TLS DH File}{dt{Stddirectory}}{}{}{}{Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.}

resourceDirective{Dir}{Storage}{TLS Enable}{dt{Boolean}}{}{no}{}{Enable TLS support.}

resourceDirective{Dir}{Storage}{TLS Key}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded private key. It must correspond to the specified “TLS Certificate”.}

resourceDirective{Dir}{Storage}{TLS PSK Enable}{dt{Boolean}}{}{yes}{}{Enable TLS-PSK support.}

resourceDirective{Dir}{Storage}{TLS PSK Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicitly sets “TLS-PSK Enable = yes”.}

resourceDirective{Dir}{Storage}{TLS Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencrypted connections. Enabling this implicitly sets “TLS Enable = yes”.}

resourceDirective{Dir}{Storage}{TLS Verify Peer}{dt{Boolean}}{}{no}{}{If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the “TLS Allowed CN” list.}

resourceDirective{Dir}{Storage}{Username}{dt{String}}{}{}{}{}

end{description}

The following is an example of a valid Storage resource definition:

Storage resource (tape) example
Storage {
  Name = DLTDrive
  Address = lpmatou
  Password = storage\_password # password for Storage daemon
  Device = "HP DLT 80"    # same as Device in Storage daemon
  Media Type = DLT8000    # same as MediaType in Storage daemon
}

2.3.8. Pool Resource

[TAG=Resource->Pool] [TAG=Pool Resource]

The Pool resource defines the set of storage Volumes (tapes or files) to be used by Bareos to write the data. By configuring different Pools, you can 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.

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 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 update command in the console program. Note that you must explicitly specify which Pool Bareos is to use with each Job. Bareos will not automatically search for the correct Pool.

To use a Pool, there are three distinct steps. First the Pool must be defined in the Director’s configuration. Then the Pool must be written to the Catalog database. This is done automatically by the Director each time that it starts. Finally, if you change the Pool definition in the Director’s configuration file and restart Bareos, the pool will be updated alternatively you can use the 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.

If automatic labeling is not enabled (see Automatic Volume Labeling) the physical media must be manually labeled. The labeling can either be done with the label command in the console program or using the btape program. The preferred method is to use the label command in the console program. Generally, automatic labeling is enabled for Device Type (Sd->Device)= File and disabled for Device Type (Sd->Device)= Tape.

Finally, you must add Volume names (and their attributes) to the Pool. For Volumes to be used by Bareos they must be of the same Media Type (Sd->Device) as the archive device specified for the job (i.e. if you are going to back up to a DLT device, the Pool must have DLT volumes defined since 8mm volumes cannot be mounted on a DLT drive). The Media Type (Sd->Device) has particular importance if you are backing up to files. When running a Job, you must explicitly specify which Pool to use. Bareos will then automatically select the next Volume to use from the Pool, but it will ensure that the Media Type (Sd->Device) of any Volume selected from the Pool is identical to that required by the Storage resource you have specified for the Job.

If you use the 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.

It is also possible to add Volumes to the database without explicitly labeling the physical volume. This is done with the add console command.

As previously mentioned, each time Bareos 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. If you change the Pool definition, you manually have to call update pool command in the console program to propagate the changes to existing volumes.

The Pool Resource defined in the Director’s configuration may contain the following directives:

begin{description}

resourceDirective{Dir}{Pool}{Action On Purge}{dt{ActionOnPurge}}{}{}{}{}

resourceDirective{Dir}{Pool}{Auto Prune}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Pool}{Catalog}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Pool}{Catalog Files}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Pool}{Cleaning Prefix}{dt{Strname}}{}{CLN}{}{}

resourceDirective{Dir}{Pool}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Pool}{File Retention}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Pool}{Job Retention}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Pool}{Label Format}{dt{Strname}}{}{}{}{}

resourceDirective{Dir}{Pool}{Label Type}{dt{Label}}{}{}{}{}

resourceDirective{Dir}{Pool}{Maximum Block Size}{dt{Size32}}{}{}{14.2.0}{}

resourceDirective{Dir}{Pool}{Maximum Volume Bytes}{dt{Size64}}{}{}{}{}

resourceDirective{Dir}{Pool}{Maximum Volume Files}{dt{Pint32}}{}{}{}{}

resourceDirective{Dir}{Pool}{Maximum Volume Jobs}{dt{Pint32}}{}{}{}{}

resourceDirective{Dir}{Pool}{Maximum Volumes}{dt{Pint32}}{}{}{}{}

resourceDirective{Dir}{Pool}{Migration High Bytes}{dt{Size64}}{}{}{}{}

resourceDirective{Dir}{Pool}{Migration Low Bytes}{dt{Size64}}{}{}{}{}

resourceDirective{Dir}{Pool}{Migration Time}{dt{Time}}{}{}{}{}

resourceDirective{Dir}{Pool}{Minimum Block Size}{dt{Size32}}{}{}{}{}

resourceDirective{Dir}{Pool}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Pool}{Next Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Pool}{Pool Type}{dt{Pooltype}}{}{Backup}{}{}

resourceDirective{Dir}{Pool}{Purge Oldest Volume}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Pool}{Recycle}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Pool}{Recycle Current Volume}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Pool}{Recycle Oldest Volume}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Pool}{Recycle Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Pool}{Scratch Pool}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Pool}{Storage}{dt{ResourceList}}{}{}{}{}

resourceDirective{Dir}{Pool}{Use Catalog}{dt{Boolean}}{}{yes}{}{}

resourceDirective{Dir}{Pool}{Use Volume Once}{dt{Boolean}}{}{}{deprecated}{}

resourceDirective{Dir}{Pool}{Volume Retention}{dt{Time}}{}{31536000}{}{}

resourceDirective{Dir}{Pool}{Volume Use Duration}{dt{Time}}{}{}{}{}

end{description}

The following is an example of a valid Pool resource definition:

Pool resource example
Pool {
  Name = Default
  Pool Type = Backup
}

2.3.8.1. Scratch Pool

[TAG=Scratch Pool] [TAG=Pool->Scratch]

In general, you can give your Pools any name you wish, but there is one important restriction: the Pool named Scratch, if it exists behaves like a scratch pool of Volumes in that when Bareos 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.

2.3.9. Catalog Resource

[TAG=Resource->Catalog] [TAG=Catalog Resource]

The Catalog Resource defines what catalog to use for the current job. Currently, Bareos can only handle a single database server (SQLite, MySQL, PostgreSQL) that is defined when configuring Bareos. 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.

Since SQLite is compiled in, it always runs on the same machine as the Director and the database must be directly accessible (mounted) from the Director. However, since both MySQL and PostgreSQL are networked databases, they may reside either on the same machine as the Director or on a different machine on the network. See below for more details.

begin{description}

resourceDirective{Dir}{Catalog}{Address}{dt{String}}{}{}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{Catalog}{DB Address}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Catalog}{DB Driver}{dt{String}}{required}{}{}{}

resourceDirective{Dir}{Catalog}{DB Name}{dt{String}}{required}{}{}{}

resourceDirective{Dir}{Catalog}{DB Password}{dt{Autopassword}}{}{}{}{}

resourceDirective{Dir}{Catalog}{DB Port}{dt{Pint32}}{}{}{}{}

resourceDirective{Dir}{Catalog}{DB Socket}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Catalog}{DB User}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Catalog}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Catalog}{Disable Batch Insert}{dt{Boolean}}{}{no}{}{}

resourceDirective{Dir}{Catalog}{Exit On Fatal}{dt{Boolean}}{}{no}{15.1.0}{Make any fatal error in the connection to the database exit the program}

resourceDirective{Dir}{Catalog}{Idle Timeout}{dt{Pint32}}{}{30}{}{This directive is used by the experimental database pooling functionality. Only use this for non production sites. This sets the idle time after which a database pool should be shrinked.}

resourceDirective{Dir}{Catalog}{Inc Connections}{dt{Pint32}}{}{1}{}{This directive is used by the experimental database pooling functionality. Only use this for non production sites. This sets the number of connections to add to a database pool when not enough connections are available on the pool anymore.}

resourceDirective{Dir}{Catalog}{Max Connections}{dt{Pint32}}{}{5}{}{This directive is used by the experimental database pooling functionality. Only use this for non production sites. This sets the maximum number of connections to a database to keep in this database pool.}

resourceDirective{Dir}{Catalog}{Min Connections}{dt{Pint32}}{}{1}{}{This directive is used by the experimental database pooling functionality. Only use this for non production sites. This sets the minimum number of connections to a database to keep in this database pool.}

resourceDirective{Dir}{Catalog}{Multiple Connections}{dt{Bit}}{}{}{}{}

resourceDirective{Dir}{Catalog}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Catalog}{Password}{dt{Autopassword}}{}{}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{Catalog}{Reconnect}{dt{Boolean}}{}{no}{15.1.0}{Try to reconnect a database connection when its dropped}

resourceDirective{Dir}{Catalog}{User}{dt{String}}{}{}{}{textit{This directive is an alias.}}

resourceDirective{Dir}{Catalog}{Validate Timeout}{dt{Pint32}}{}{120}{}{This directive is used by the experimental database pooling functionality. Only use this for non production sites. This sets the validation timeout after which the database connection is polled to see if its still alive.}

end{description}

The following is an example of a valid Catalog resource definition:

Catalog Resource for Sqlite
Catalog
{
  Name = SQLite
  DB Driver = sqlite
  DB Name = bareos;
  DB User = bareos;
  DB Password = ""
}

or for a Catalog on another machine:

Catalog Resource for remote MySQL
Catalog
{
  Name = MySQL
  DB Driver = mysql
  DB Name = bareos
  DB User = bareos
  DB Password = "secret"
  DB Address = remote.example.com
  DB Port = 1234
}

2.3.10. Messages Resource

[TAG=Resource->Messages] [TAG=Messages Resource]

For the details of the Messages Resource, please see the Messages Resource of this manual.

2.3.11. Console Resource

[TAG=Console Resource] [TAG=Resource->Console]

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.

Default Console
[TAG=Console->Default Console] the first console type is an anonymous or 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 Name directive. Typically you would use it only for administrators.
Named Console

[TAG=Named Console] [TAG=Console->Named Console] [TAG=Console->Restricted Console] the second type of console, is a named console (also called Restricted 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.

This second type of console begins with absolutely no privileges except those explicitly specified in the Director’s Console resource. Thus you can have multiple Consoles with different names and passwords, sort of like multiple users, each with different privileges. As a default, these consoles can do absolutely nothing – no commands whatsoever. You give them privileges or rather access to commands and resources by specifying access control lists in the Director’s Console resource. The ACLs are specified by a directive followed by a list of access names. Examples of this are shown below.

  • The third type of console is similar to the above mentioned one in that it requires a Console resource definition in both the Director and the Console. In addition, if the console name, provided on the Name (Dir->Console) directive, is the same as a Client name, that console is permitted to use the 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.

The Console resource is optional and need not be specified. The following directives are permitted within these resources:

begin{description}

resourceDirective{Dir}{Console}{Catalog ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Client ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Command ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Console}{File Set ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Job ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Name}{dt{Name}}{required}{}{}{}

resourceDirective{Dir}{Console}{Password}{dt{Autopassword}}{required}{}{}{}

resourceDirective{Dir}{Console}{Plugin Options ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Pool ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Profile}{dt{ResourceList}}{}{}{14.2.3}{Profiles can be assigned to a Console. ACL are checked until either a deny ACL is found or an allow ACL. First the console ACL is checked then any profile the console is linked to.}

resourceDirective{Dir}{Console}{Run ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Schedule ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{Storage ACL}{dt{Acl}}{}{}{}{}

resourceDirective{Dir}{Console}{TLS Allowed CN}{dt{StringList}}{}{}{}{“Common Name”s (CNs) of the allowed peer certificates.}

resourceDirective{Dir}{Console}{TLS Authenticate}{dt{Boolean}}{}{no}{}{Use TLS only to authenticate, not for encryption.}

resourceDirective{Dir}{Console}{TLS CA Certificate Dir}{dt{Stddirectory}}{}{}{}{Path of a TLS CA certificate directory.}

resourceDirective{Dir}{Console}{TLS CA Certificate File}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS CA certificate(s) file.}

resourceDirective{Dir}{Console}{TLS Certificate}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded TLS certificate.}

resourceDirective{Dir}{Console}{TLS Certificate Revocation List}{dt{Stddirectory}}{}{}{}{Path of a Certificate Revocation List file.}

resourceDirective{Dir}{Console}{TLS Cipher List}{dt{String}}{}{}{}{List of valid TLS Ciphers.}

resourceDirective{Dir}{Console}{TLS DH File}{dt{Stddirectory}}{}{}{}{Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.}

resourceDirective{Dir}{Console}{TLS Enable}{dt{Boolean}}{}{no}{}{Enable TLS support.}

resourceDirective{Dir}{Console}{TLS Key}{dt{Stddirectory}}{}{}{}{Path of a PEM encoded private key. It must correspond to the specified “TLS Certificate”.}

resourceDirective{Dir}{Console}{TLS PSK Enable}{dt{Boolean}}{}{yes}{}{Enable TLS-PSK support.}

resourceDirective{Dir}{Console}{TLS PSK Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicitly sets “TLS-PSK Enable = yes”.}

resourceDirective{Dir}{Console}{TLS Require}{dt{Boolean}}{}{no}{}{Without setting this to yes, Bareos can fall back to use unencrypted connections. Enabling this implicitly sets “TLS Enable = yes”.}

resourceDirective{Dir}{Console}{TLS Verify Peer}{dt{Boolean}}{}{no}{}{If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the “TLS Allowed CN” list.}

resourceDirective{Dir}{Console}{Where ACL}{dt{Acl}}{}{}{}{}

end{description}

The example at Using Named Consoles shows how to use a console resource for a connection from a client like bconsole.

2.3.12. Profile Resource

[TAG=Profile Resource] [TAG=Resource->Profile]

The Profile Resource defines a set of ACLs. DirectorResourceConsole`s can be tight to one or more profiles (:config:option:`dir/console/Profile), making it easier to use a common set of ACLs.

begin{description}

resourceDirective{Dir}{Profile}{Catalog ACL}{dt{Acl}}{}{}{}{Lists the Catalog resources, this resource has access to. The special keyword all allows access to all Catalog resources.}

resourceDirective{Dir}{Profile}{Client ACL}{dt{Acl}}{}{}{}{Lists the Client resources, this resource has access to. The special keyword all allows access to all Client resources.}

resourceDirective{Dir}{Profile}{Command ACL}{dt{Acl}}{}{}{}{Lists the commands, this resource has access to. The special keyword all allows using commands.}

resourceDirective{Dir}{Profile}{Description}{dt{String}}{}{}{}{Additional information about the resource. Only used for UIs.}

resourceDirective{Dir}{Profile}{File Set ACL}{dt{Acl}}{}{}{}{Lists the File Set resources, this resource has access to. The special keyword all allows access to all File Set resources.}

resourceDirective{Dir}{Profile}{Job ACL}{dt{Acl}}{}{}{}{Lists the Job resources, this resource has access to. The special keyword all allows access to all Job resources.}

resourceDirective{Dir}{Profile}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Profile}{Plugin Options ACL}{dt{Acl}}{}{}{}{Specifies the allowed plugin options. An empty strings allows all Plugin Options.}

resourceDirective{Dir}{Profile}{Pool ACL}{dt{Acl}}{}{}{}{Lists the Pool resources, this resource has access to. The special keyword all allows access to all Pool resources.}

resourceDirective{Dir}{Profile}{Schedule ACL}{dt{Acl}}{}{}{}{Lists the Schedule resources, this resource has access to. The special keyword all allows access to all Schedule resources.}

resourceDirective{Dir}{Profile}{Storage ACL}{dt{Acl}}{}{}{}{Lists the Storage resources, this resource has access to. The special keyword all allows access to all Storage resources.}

resourceDirective{Dir}{Profile}{Where ACL}{dt{Acl}}{}{}{}{Specifies the base directories, where files could be restored. An empty string allows restores to all directories.}

end{description}

2.3.13. Counter Resource

[TAG=Resource->Counter] [TAG=Counter Resource]

The Counter Resource defines a counter variable that can be accessed by variable expansion used for creating Volume labels with the Label Format (Dir->Pool) directive.

begin{description}

resourceDirective{Dir}{Counter}{Catalog}{dt{Commonresourceheader}}{}{}{}{}

resourceDirective{Dir}{Counter}{Description}{dt{String}}{}{}{}{}

resourceDirective{Dir}{Counter}{Maximum}{dt{Pint32}}{}{2147483647}{}{}

resourceDirective{Dir}{Counter}{Minimum}{dt{Int32}}{}{0}{}{}

resourceDirective{Dir}{Counter}{Name}{dt{Name}}{required}{}{}{The name of the resource.}

resourceDirective{Dir}{Counter}{Wrap Counter}{dt{Commonresourceheader}}{}{}{}{}

end{description}