#
Director { # define myself
- Name = @hostname@-dir
+ Name = @basename@-dir
DIRport = @dir_port@ # where we listen for UA connections
QueryFile = "@scriptdir@/query.sql"
WorkingDirectory = "@working_dir@"
PidDirectory = "@piddir@"
Maximum Concurrent Jobs = 1
Password = "@dir_password@" # Console password
- Messages = Standard
+ Messages = Daemon
}
JobDefs {
Name = "DefaultJob"
Type = Backup
Level = Incremental
- Client = @hostname@-fd
+ Client = @basename@-fd
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = File
#
# Define the main nightly save backup job
-# By default, this job will back up to disk in /tmp
+# By default, this job will back up to disk in @archivedir@
Job {
Name = "Client1"
JobDefs = "DefaultJob"
Write Bootstrap = "@working_dir@/Client1.bsr"
}
+#Job {
+# Name = "Client2"
+# Client = @basename@2-fd
+# JobDefs = "DefaultJob"
+# Write Bootstrap = "@working_dir@/Client2.bsr"
+#}
+
# Backup the catalog database (after the nightly save)
Job {
Name = "BackupCatalog"
FileSet="Catalog"
Schedule = "WeeklyCycleAfterBackup"
# This creates an ASCII copy of the catalog
- RunBeforeJob = "@scriptdir@/make_catalog_backup -u bacula"
+ # WARNING!!! Passing the password via the command line is insecure.
+ # see comments in make_catalog_backup for details.
+ # Arguments to make_catalog_backup are:
+ # make_catalog_backup <database-name> <user-name> <password> <host>
+ RunBeforeJob = "@scriptdir@/make_catalog_backup @db_name@ @db_user@"
# This deletes the copy of the catalog
RunAfterJob = "@scriptdir@/delete_catalog_backup"
Write Bootstrap = "@working_dir@/BackupCatalog.bsr"
Priority = 11 # run after main backup
}
+#
# Standard Restore template, to be changed by Console program
+# Only one such job is needed for all Jobs/Clients/Storage ...
+#
Job {
Name = "RestoreFiles"
- JobDefs = "DefaultJob"
Type = Restore
- Where = /tmp/bacula-restores
+ Client=@basename@-fd
+ FileSet="Full Set"
+ Storage = File
+ Pool = Default
+ Messages = Standard
+ Where = @archivedir@/bacula-restores
}
# List of files to be backed up
FileSet {
Name = "Full Set"
- Include = signature=MD5 {
+ Include {
+ Options {
+ signature = MD5
+ }
#
-# Put your list of files here, one per line or include an
-# external list with:
+# Put your list of files here, preceded by 'File =', one per line
+# or include an external list with:
#
-# <file-name
+# File = <file-name
#
# Note: / backs up everything on the root partition.
# if you have other partitons such as /usr or /home
# directory to give a reasonable FileSet to backup to
# disk storage during initial testing.
#
- @BUILD_DIR@
+ File = @BUILD_DIR@
}
#
# If you backup the root directory, the following two excluded
# files can be useful
#
- Exclude = { /proc /tmp /.journal /.fsck }
+ Exclude {
+ File = /proc
+ File = /tmp
+ File = /.journal
+ File = /.fsck
+ }
}
#
# and incremental backups other days
Schedule {
Name = "WeeklyCycle"
- Run = Full 1st sun at 1:05
- Run = Differential 2nd-5th sun at 1:05
- Run = Incremental mon-sat at 1:05
+ Run = Full 1st sun at 23:05
+ Run = Differential 2nd-5th sun at 23:05
+ Run = Incremental mon-sat at 23:05
}
# This schedule does the catalog. It starts after the WeeklyCycle
Schedule {
Name = "WeeklyCycleAfterBackup"
- Run = Full sun-sat at 1:10
+ Run = Full sun-sat at 23:10
}
# This is the backup of the catalog
FileSet {
Name = "Catalog"
- Include = signature=MD5 {
- @working_dir@/bacula.sql
+ Include {
+ Options {
+ signature = MD5
+ }
+ File = @working_dir@/bacula.sql
}
}
# Client (File Services) to backup
Client {
- Name = @hostname@-fd
+ Name = @basename@-fd
Address = @hostname@
FDPort = @fd_port@
Catalog = MyCatalog
AutoPrune = yes # Prune expired Jobs/Files
}
-# Definiton of file storage device
+#
+# Second Client (File Services) to backup
+# You should change Name, Address, and Password before using
+#
+#Client {
+# Name = @basename@2-fd
+# Address = @hostname@2
+# FDPort = @fd_port@
+# Catalog = MyCatalog
+# Password = "@fd_password@2" # password for FileDaemon 2
+# File Retention = 30 days # 30 days
+# Job Retention = 6 months # six months
+# AutoPrune = yes # Prune expired Jobs/Files
+#}
+
+
+# Definition of file storage device
Storage {
Name = File
+# Do not use "localhost" here
Address = @hostname@ # N.B. Use a fully qualified name here
SDPort = @sd_port@
Password = "@sd_password@"
}
+
# Definition of DDS tape storage device
#Storage {
# Name = DDS-4
+# Do not use "localhost" here
# Address = @hostname@ # N.B. Use a fully qualified name here
# SDPort = @sd_port@
# Password = "@sd_password@" # password for Storage daemon
# Device = DDS-4 # must be same as Device in Storage daemon
# Media Type = DDS-4 # must be same as MediaType in Storage daemon
+# Autochanger = yes # enable for autochanger device
#}
# Definition of 8mm tape storage device
#Storage {
# Name = "8mmDrive"
+# Do not use "localhost" here
# Address = @hostname@ # N.B. Use a fully qualified name here
# SDPort = @sd_port@
# Password = "@sd_password@"
# MediaType = "8mm"
#}
+# Definition of DVD storage device
+#Storage {
+# Name = "DVD"
+# Do not use "localhost" here
+# Address = @hostname@ # N.B. Use a fully qualified name here
+# SDPort = @sd_port@
+# Password = "@sd_password@"
+# Device = "DVD Writer"
+# MediaType = "DVD"
+#}
+
# Generic catalog service
Catalog {
Name = MyCatalog
- dbname = bacula; user = bacula; password = ""
+# Uncomment the following line if you want the dbi driver
+@uncomment_dbi@ dbdriver = "dbi:@DB_TYPE@"; dbaddress = 127.0.0.1; dbport = @db_port@
+ dbname = "@db_name@"; dbuser = "@db_user@"; dbpassword = "@db_password@"
}
# Reasonable message delivery -- send most everything to email address
# and to the console
Messages {
Name = Standard
- mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
- operatorcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
+#
+# NOTE! If you send to two email or more email addresses, you will need
+# to replace the %r in the from field (-f part) with a single valid
+# email address in both the mailcommand and the operatorcommand.
+# What this does is, it sets the email address that emails would display
+# in the FROM field, which is by default the same email as they're being
+# sent to. However, if you send email to more than one address, then
+# you'll have to set the FROM address manually, to a single address.
+# for example, a 'no-reply@mydomain.com', is better since that tends to
+# tell (most) people that its coming from an automated source.
+
+#
+ mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
+ operatorcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = @job_email@ = all, !skipped
operator = @job_email@ = mount
console = all, !skipped, !saved
#
append = "@working_dir@/log" = all, !skipped
}
+
+
+#
+# Message delivery for daemon messages (no job).
+Messages {
+ Name = Daemon
+ mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
+ mail = @job_email@ = all, !skipped
+ console = all, !skipped, !saved
+ append = "@working_dir@/log" = all, !skipped
+}
+
+
+
# Default pool definition
Pool {
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
- Accept Any Volume = yes # write on any volume in the pool
+}
+
+# Scratch pool definition
+Pool {
+ Name = Scratch
+ Pool Type = Backup
+}
+
+#
+# Restricted console used by tray-monitor to get the status of the director
+#
+Console {
+ Name = @basename@-mon
+ Password = "@mon_dir_password@"
+ CommandACL = status, .status
}