Bacula Enterprise Installation on MacOS
CommunityEnterpriseThis procedure provides step-by-step instructions to install and configure Bacula File
Daemon (bacula-fd) on a macOS system.
Download and install the Bacula macOS package. You can download the
.dmg installerfor macOS from the Bacula Systems portal or use a custom-built version if available internally.
After downloading:
Mount the .dmg file.
Drag and drop the Bacula.app into /Applications.
Locate the
bacula-fdbinary and configuration. The binary and default configuration paths are located inside the app bundle:Binary path:
/Applications/Bacula.app/Contents/Resources/BaculaBin/sbin/bacula-fd
Default configuration path:
~/.bacula/bacula-fd.conf
Note
You may need to create this directory and configuration manually.
Configure
bacula-fd. Configuration can be done via the Bacula icon in the macOS menu bar or by manually editing the configuration file.
Important
If configuration is done via the Bacula icon in the menu bar, the bacula-fd.conf
file will be created in a hidden .bacula directory inside the home folder
of the user who performed the change, e.g. /Users/username/.bacula/bacula-fd.conf.
Alternatively, create or edit the file manually:
mkdir -p ~/.bacula
nano ~/.bacula/bacula-fd.conf
Sample minimal configuration:
Director {
Name = my-dir
Password = "mysecret"
}
FileDaemon {
Name = my-client-fd
FDport = 9102
WorkingDirectory = /Users/your_user/bacula/working
PidDirectory = /Users/your_user/bacula/working
Maximum Concurrent Jobs = 2
}
Messages {
Name = Standard
director = my-dir = all, !skipped, !restored
}
Make sure the directories mentioned exist:
mkdir -p ~/bacula/working
Run
bacula-fdmanually.
You can start bacula-fd using the full path:
/Applications/Bacula.app/Contents/Resources/BaculaBin/sbin/bacula-fd -c ~/.bacula/bacula-fd.conf
This will start the daemon in the foreground. You can test the connection from the Director once it’s running.
To run it in the background, you can add & at the end:
/Applications/Bacula.app/Contents/Resources/BaculaBin/sbin/bacula-fd -c ~/.bacula/bacula-fd.conf &
Optional: Set up auto-start on login. If needed, create a launchd job to run
bacula-fdautomatically on user login.
Director {
Name = dc-rhel9-dir-bweb-tst-dir
Password = "cqrmarzrhlq9odeeaglws"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = rhel9ClientMultiPlugin-fd-mon
Password = "t8F2x8swmiZPxxbcodZYLSh5W2Ph0W1FH"
Monitor = yes
}
#
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = hostname-fd
FDAddress = 0.0.0.0
FDport = 9105 # where we listen for the director
WorkingDirectory = /Users/username/.bacula
Pid Directory = /Users/username/.bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /Applications/Bacula.app/Contents/Resources/BaculaBin/lib
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = dc-rhel9-dir-bweb-tst-dir = all, !skipped, !restored, !verified, !saved
}
Fileset:
*show fileset=a-MacOS-FS
Fileset: name=a-MacOS-FS IgnoreFilesetChanges=0
I /Users/username/Desktop/Screenshot 2025-08-04 at 13.42.15.png
N
*
Steps to Connect to Bacula FD through VPN
Identify the VPN IP address on the FD Host.
On the File Daemon (FD) machine, run the following command to locate the active VPN IP address:
ifconfig | grep -B3 "inet 10.255"
Example output:
utun6: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 10.192.4.5 --> 10.192.4.5 netmask 0xffffff00
utun7: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 10.255.0.38 --> 10.255.0.37 netmask 0xfffffffc
In this case, the VPN-assigned IP for the FD is 10.255.0.38.
Create an SSH Tunnel from the Director to the FD Host on the Director (DIR) host, establish an SSH tunnel to forward traffic to port 9105:
ssh -L 9105:localhost:9105 username@10.255.0.38
You will be prompted for the remote user password:
username@10.255.0.38's password:
Example login output:
Last login: Mon Aug 4 13:38:13 2025 from 10.0.99.84
/Users/username/.zshrc:source:7: no such file or directory: /Users/username/.oh-my-zsh/oh-my-zsh.sh
Once the tunnel is established, the Director can communicate with the FD through localhost:9105.
Testing access and communication:
*estimate listing
The defined Job resources are:
1: A-AutoPrune-Pool-DiskBackup365d
2: BaculaDirectorConfigs
3: Copy
4: J-MacMini-MacOS
5: J-PGSQL
6: J_amazon-rds_ins-db-pgl
7: J_gw_jorge_at_baculasystmes.com
8: J_gw_license_at_baculasystmes.com
9: J_gw_nbc_at_baculasystmes.com
10: J_rhel9-mysql8.4-fd_mysql_demo2
11: LinuxHome
12: RDS-PGSQL-J
13: Restore
14: ServerMysql-J
15: VSphere-DanielVM-J
16: dc-rhel9-dir-bweb-tst-dev-null-job
17: gw-J
18: gw-bookworm-J
Select Job resource (1-18): 4
Using Catalog "BaculaCatalog"
Connecting to Client macmini-fd at 127.0.0.1:9105
-rw-r--r-- 1 danielca staff 48823 2025-08-04 13:42:21 /Users/username/Desktop/Screenshot 2025-08-04 at 13.42.15.png
2000 OK estimate files=1 bytes=48,823
Backup Job:
2025-08-04 22:22:19 dc-rhel9-dir-bweb-tst-dir JobId 1082: No prior or suitable Full backup found in catalog. Doing FULL backup.
2025-08-04 22:22:21 dc-rhel9-dir-bweb-tst-dir JobId 1082: Start Backup JobId 1082, Job=J-MacMini-MacOS.2025-08-04_22.22.19_06
2025-08-04 22:22:21 dc-rhel9-dir-bweb-tst-dir JobId 1082: Connected to Storage "DiskAutochanger" at dc-rhel9-dir-bweb-tst:9103 with TLS
2025-08-04 22:22:21 dc-rhel9-dir-bweb-tst-dir JobId 1082: Using Device "DiskAutochanger_Dev0" to write.
2025-08-04 22:22:24 dc-rhel9-dir-bweb-tst-dir JobId 1082: Connected to Client "macmini-fd" at 127.0.0.1:9105 with TLS
2025-08-04 22:22:27 hostname-fd JobId 1082: Connected to Storage at dc-rhel9-dir-bweb-tst:9103 with TLS
2025-08-04 22:22:28 dc-rhel9-dir-bweb-tst-sd JobId 1082: Recycled volume "Vol-0082" on File device "DiskAutochanger_Dev0" (/opt/bacula/archive), all previous data lost.
2025-08-04 22:22:30 dc-rhel9-dir-bweb-tst-sd JobId 1082: Elapsed time=00:00:02, Transfer rate=24.48 K Bytes/second
2025-08-04 22:22:30 dc-rhel9-dir-bweb-tst-sd JobId 1082: Sending spooled attrs to the Director. Despooling 195 bytes ...
2025-08-04 22:22:31 dc-rhel9-dir-bweb-tst-dir JobId 1082: Bacula Enterprise dc-rhel9-dir-bweb-tst-dir 18.2.0 (22May25):
Build OS: x86_64-redhat-linux-gnu-bacula-enterprise redhat (Blue
JobId: 1082
Job: J-MacMini-MacOS.2025-08-04_22.22.19_06
Backup Level: Full (upgraded from Incremental)
Client: "macmini-fd" 14.0.5 (10Aug22) x86_64-apple-darwin21.5.0,osx,21.5.0
FileSet: "a-MacOS-FS" 2025-08-04 21:58:12
Pool: "DiskBackup365d" (From Job resource)
Catalog: "BaculaCatalog" (From Client resource)
Storage: "DiskAutochanger" (From Job resource)
Scheduled time: 04-Aug-2025 22:22:16
Start time: 04-Aug-2025 22:22:27
End time: 04-Aug-2025 22:22:31
Elapsed time: 4 secs
Priority: 10
FD Files Written: 1
SD Files Written: 1
FD Bytes Written: 48,823 (48.82 KB)
SD Bytes Written: 48,961 (48.96 KB)
Rate: 12.2 KB/s
Software Compression: None
Comm Line Compression: None
Snapshot/VSS: no
Encryption: no
Accurate: no
Volume name(s): Vol-0082
Volume Session Id: 35
Volume Session Time: 1750966840
Last Volume Bytes: 49,704 (49.70 KB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK
Restore Job:
Enter a period to cancel a command.
*r
Automatically selected Catalog: BaculaCatalog
Using Catalog "BaculaCatalog"
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Select object to restore
14: Cancel
Select item: (1-14): 3
Enter JobId(s), comma separated, to restore: 1082
You have selected the following JobId: 1082
Building directory tree for JobId(s) 1082 ...
1 files inserted into the tree.
You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.
cwd is: /
$ add *
1 file marked.
$ done
Bootstrap records written to /opt/bacula/working/dc-rhel9-dir-bweb-tst-dir.restore.2.bsr
The Job will require the following (*=>InChanger):
Volume(s) Storage(s) SD Device(s)
===========================================================================
Vol-0082 DiskAutochanger DiskAutochanger
Volumes marked with "*" are in the Autochanger.
1 file selected to be restored.
Defined Clients:
1: GoogleWorkspace-fd
2: U24PsqlPlugin-fd
3: bookworm-GW-fd
4: dc-bookworm-fd-fd
5: dc-psql-deb12-fd
6: dc-rhel9-dir-bweb-tst-fd
7: dc-rhel9-fd-tst-fd
8: macmini-fd
9: rescue-fd
10: rhel9-mysql8.4-fd
11: rhel9ClientMultiPlugin-fd
Select the Client (1-11): 8
Run Restore job
JobName: Restore
Bootstrap: /opt/bacula/working/dc-rhel9-dir-bweb-tst-dir.restore.2.bsr
Where: /opt/bacula/archive/bacula-restores
Replace: Always
Fileset: BaculaConfigs
Backup Client: macmini-fd
Restore Client: macmini-fd
Storage: DiskAutochanger
When: 2025-08-08 15:43:08
Catalog: BaculaCatalog
Priority: 10
Plugin Options: *None*
OK to run? (Yes/mod/no): mod
Parameters to modify:
1: Level
2: Storage
3: Job
4: Fileset
5: Restore Client
6: When
7: Priority
8: Bootstrap
9: Where
10: File Relocation
11: Replace
12: JobId
13: Plugin Options
Select parameter to modify (1-13): 9
Please enter the full path prefix for restore (/ for none): /
Run Restore job
JobName: Restore
Bootstrap: /opt/bacula/working/dc-rhel9-dir-bweb-tst-dir.restore.2.bsr
Where:
Replace: Always
Fileset: BaculaConfigs
Backup Client: macmini-fd
Restore Client: macmini-fd
Storage: DiskAutochanger
When: 2025-08-08 15:43:08
Catalog: BaculaCatalog
Priority: 10
Plugin Options: *None*
OK to run? (Yes/mod/no): yes
Job queued. JobId=1087
Restore joblog:
*list joblog jobid=1087
+----------------------------------------------------------------------------------------------------+
| logtext |
+----------------------------------------------------------------------------------------------------+
| dc-rhel9-dir-bweb-tst-dir JobId 1087: Start Restore Job Restore.2025-08-08_15.43.36_15 |
| dc-rhel9-dir-bweb-tst-dir JobId 1087: Restoring files from JobId(s) 1082 |
| dc-rhel9-dir-bweb-tst-dir JobId 1087: Connected to Storage "DiskAutochanger" at dc-rhel9-dir-bweb-tst:9103 with TLS |
| dc-rhel9-dir-bweb-tst-dir JobId 1087: Using Device "DiskAutochanger_Dev0" to read. |
| dc-rhel9-dir-bweb-tst-dir JobId 1087: Connected to Client "macmini-fd" at 127.0.0.1:9105 with TLS |
| hostname-fd JobId 1087: Connected to Storage at dc-rhel9-dir-bweb-tst:9103 with TLS |
| dc-rhel9-dir-bweb-tst-sd JobId 1087: Ready to read from volume "Vol-0082" on File device "DiskAutochanger_Dev0" (/opt/bacula/archive). |
| dc-rhel9-dir-bweb-tst-sd JobId 1087: Forward spacing Volume "Vol-0082" to addr=277 |
| dc-rhel9-dir-bweb-tst-sd JobId 1087: Elapsed time=00:00:01, Transfer rate=48.96 K Bytes/second |
| dc-rhel9-dir-bweb-tst-dir JobId 1087: Bacula Enterprise dc-rhel9-dir-bweb-tst-dir 18.2.0 (22May25):
Build OS: x86_64-redhat-linux-gnu-bacula-enterprise redhat (Blue
JobId: 1087
Job: Restore.2025-08-08_15.43.36_15
Restore Client: "macmini-fd" 14.0.5 (10Aug22) x86_64-apple-darwin21.5.0,osx,21.5.0
Where:
Replace: Always
Start time: 08-Aug-2025 15:43:38
End time: 08-Aug-2025 15:43:48
Elapsed time: 10 secs
Files Expected: 1
Files Restored: 1
Bytes Restored: 48,823 (48.82 KB)
Rate: 4.9 KB/s
FD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Restore OK |
+----------------------------------------------------------------------------------------------------+
+-------+---------+---------------------+------+-------+----------+----------+-----------+
| jobid | name | starttime | type | level | jobfiles | jobbytes | jobstatus |
+-------+---------+---------------------+------+-------+----------+----------+-----------+
| 1,087 | Restore | 2025-08-08 15:43:38 | R | F | 1 | 48,823 | T |
+-------+---------+---------------------+------+-------+----------+----------+-----------+
*
See also
Previous articles:
Go back to: Bacula Enterprise Installation.