Adding a new FileDaemon to Bacula

Adding a new FileDaemon to backup a new host (not already serving files to Bacula) is relatively similar between Windows and Unix Compatible.

You must first install the FD Client on the server you wish to back up.

This guide covers windows hosts, but linux hosts are primarily the same setup.

[hr top=”0″ bottom=”18″ /]

Install the FD Service client on the server.

Download the appropriate version of the bacula-FD (Currently running Bacula 7.0.5 with windows FD of 5.2.10)

Windows FD 5.2.10 download

Run the installer as an administrator in windows. Once the installer completes, you must locate and edit the configuration files:

You can usually find these in windows by clicking Start -> All Programs -> Bacula -> Configuration -> Edit *SOMETHING* Configuration.

We’ll stick to Client Configuration for this guide.


It opens in a text editor. Here are the relevant sections to edit:

# "Global" File daemon configuration specifications
FileDaemon {                            # this is me
  Name = SERVERNAME-fd
  FDport = 9102                # where we listen for the director
  WorkingDirectory = "C:\\Program Files\\Bacula\\working"
  Pid Directory = "C:\\Program Files\\Bacula\\working"
# Plugin Directory = "C:\\Program Files\\Bacula\\plugins"
  Maximum Concurrent Jobs = 10

Under the FileDaemon section, edit your global name field to match whatever is expected in the Director configuration.

[hr top=”0″ bottom=”18″ /]

Next we need to set the director name and password:

# List Directors who are permitted to contact this File daemon
Director {
  Name = bacula-dir
  Password = "XxXXxxXXxxxxxXXXxxxxXX"

Note, the name of bacula-dir is the default. Make sure it matches the main server director’s name.
The password field can be unique to this FD client, but must match in the main bacula director configuration file.

Save these files to the local machine, restart the bacula FD service.

[hr top=”0″ bottom=”18″ /]

Add the new FileDaemon to Bacula Director


Then, super-user edit the bacula-dir.conf file:

sudo nano /etc/bacula/bacula-dir.conf

Next we’ll locate the client config section and edit as follows:

Find a record to duplicate and copy/paste it to make your modifications.

Client {
  Name = SERVERNAME-fd
  Address =
  FDPort = 9102
  Catalog = MyCatalog
  Password = "XxXXxxXXxxxxxXXXxxxxXX"	 # password for FileDaemon
  File Retention = 7 days            # one week
  Job Retention = 7 days           # one week
  AutoPrune = no                    # Prune expired Jobs/Files

Edit the comment to match your server name.
Edit the Name field to match your FD’s name.
Edit the address to the IP or FQDN of the server you wish to add.
Verify that the password matches exactly.

Save changes to bacula-dir.conf and restart the director:

sudo service bacula-dir restart

You can now proceed to follow the steps for adding a new backup location to your rotation.


Adding a new backup source to Bacula

To add a new backup source to Bacula, use the following procedure.

Log in to your bacula installation:


(ALWAYS back up your working config file first!)

#sudo cp /etc/bacula/bacula-dir.conf /etc/bacula/bacula-dir.conf.bak

Edit /etc/bacula/bacula-dir.conf

#sudo nano /etc/bacula/bacula-dir.conf

There are a few notable sections we must edit to add a new target:

  • Job definition
  • File Set
  • Client File Services (if not already added to the director)

[hr top=”0″ bottom=”18″ /]

The Job definition record is typically as follows, you can usually duplicate and modify:

Job {
Name = "Backup SOMETHING share"
JobDefs = DefaultJob
Type = Backup
Level = Incremental
Client = servername-fd
Schedule = "WeeklyCycle"
Storage = Storage01
Pool = BaculaPool
  • Replace SOMETHING with a description of what you’re backing up.
    1. That could be the name of a share (e.g. Clients).
  • Adjust the Name field for the friendly name of the backup job.
  • Edit the Client field to match the exact name of the bacula FileDaemon for a given server (See Adding a new FileDaemon).
  • Edit the FileSet name to exactly match the name specified in the FileSet directive later in the configuration file.
  • Edit the Storage field according to which storage pool you’d like. Be careful not to over-fill a pool with backups
    1. Options in this example:
      1. Storage01 = /iscsi/storage01/*
      2. Storage02 = /iscsi/storage02/*
      3. Storage03 = /iscsi/storage03/*
  • Match the Pool reference to the appropriate storage recycle pool to the storage you chose:
    1. Storage01 = BaculaPool
    2. Storage02 = BaculaPool2
    3. Storage03 = BaculaPool3

[hr top=”0″ bottom=”18″ /]

Locate the file set closest to the config you duplicated for backup job. Please note, these are different depending on backup of Linux/unix or Windows based file formats:

Windows FileSet:

FileSet {
 Include {
  Options {
   signature = MD5
   Exclude = yes
   IgnoreCase = yes
   # Exclude Mozilla-based programs' file caches
   WildDir = "[A-Z]:/Documents and Settings/*/Application Data/*/Profiles/*/*/Cache"
   WildDir = "[A-Z]:/Documents and Settings/*/Application Data/*/Profiles/*/*/Cache.Trash"
   WildDir = "[A-Z]:/Documents and Settings/*/Application Data/*/Profiles/*/*/ImapMail"

   # Exclude user's registry files - they're always in use anyway.
   WildFile = "[A-Z]:/Documents and Settings/*/Local Settings/Application Data/Microsoft/Windows/usrclass.*"
   WildFile = "[A-Z]:/Documents and Settings/*/ntuser.*"

   # Exclude directories full of lots and lots of useless little files
   WildDir = "[A-Z]:/Documents and Settings/*/Cookies"
   WildDir = "[A-Z]:/Documents and Settings/*/Recent"
   WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/History"
   WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/Temp"
   WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/Temporary Internet Files"

   # These are always open and unable to be backed up
   # Some random bits of Windows we want to ignore
   # Temporary directories & files
   WildDir = "[A-Z]:/WINNT/Temp"
   WildDir = "[A-Z]:/temp"
   WildFile = "*.tmp"
   WildDir = "[A-Z]:/tmp"
   WildDir = "[A-Z]:/var/tmp"

   # Recycle bins
   WildDir = "[A-Z]:/RECYCLER"

   # Swap files

   # These are programs and are easier to reinstall than restore from
   # backup
   #these are the files to back up

  • Edit the comment to match your server and job info
  • Edit the Name field to match exactly what you specified in the JobDefs
  • Edit the File field at the bottom accordingly.
    1. You can specify more than one File path (recursive by default)
      1. NOTE: because this is running on a Linux system you must use / (forward slash) for it to understand slashes.
      2. You can use spaces in the path as long as the (required) quotes remain intact
      3. For Linux paths, use a root relative path e.g. /SOMETHING/PATH

[hr top=”0″ bottom=”18″ /]

Client File Services Connector (if not already serving files, see Adding a new FileDaemon):

Client {
  Name = SERVERNAME-fd
  Address =
  FDPort = 9102
  Catalog = MyCatalog
  Password = "XxXXXXxXXxXXXxxxXXXxxxXXxXX"      # password for FileDaemon
  File Retention = 7 days            # one week
  Job Retention = 7 days           # one week
  AutoPrune = no                    # Prune expired Jobs/Files
  • Edit the comment to match the server name
  • Edit the Name field to exactly what’s specified in the FD config.
  • Edit the Address field to the IP address or FQDN of the server hosting the FD
  • Match the Password field to the FD for that server.

[hr top=”0″ bottom=”18″ /]

Apply Changes

After modification of these core config files you must reload bacula director to detect changes:

#sudo service bacula-dir restart

If you modified FileDaemon configuration as well (in bacula-fd.conf) you must also restart the FD service:

#sudo service bacula-fd restart

[hr top=”0″ bottom=”18″ /]

Verify Changes

Enter bacula console to verify and test new configuration:


Bacula will respond with a console prompt:

Connecting to Director
1000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.

Check the status of your new backup set:

* run

Bacula responds with a console prompt:

Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
1: Backup Self
2: Backup FINANCE share
3: Backup HR share
4: Backup Accounting share
5: Backup CLIENTS share
6: Backup IT share
7: Backup Secure share
8: Backup Media share
9: Backup Secret Admin share
10: Backup SOMETHING share
11: BackupCatalog
12: RestoreFiles
Select Job resource (1-12):

Select your new set by entering the number (e.g. 10)

Run Backup job
JobName:          Backup SOMETHING share
Level:            Incremental
Client:           SERVERNAME-fd
Pool:             BaculaPool (From Job resource)
Storage:          Storage01 (From Job resource)
When:             2015-10-14 09:15:07
Priority: 10
OK to run? (yes/mod/no):

Enter “yes”

Job queued. JobId=6258
You have messages.

Check status by either waiting for email confirmation of success/fail to your bacula report email address OR by entering this console command:

* status dir

Director status will show running and scheduled jobs. If error conditions exist please consult bacula documentation.