I am using Debian Wheezy (stable) with bacula 5.2.6 and Postgresql 9.1
-I Cannot Make the Catalog backup to work_
I work so many hours on this but now I am turning in circles.
I get the following error when I try to run a backup of the catalog
Could not stat "/var/lib/bacula/bacula.sql": ERR=No such file or directory
The file exists it creates it because I see it in /var/lib/bacula after the attempt.
I temporarly disabled the Run After sequence so the file won't get erased
Here is my director config:
PHP Code:
#
# Default Bacula Director Configuration file
#
# For Bacula release 5.2.6 (21 February 2012) -- debian 7.0
#
Director { # define myself
Name = buserver-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1
Password = "some password" # Console password
Statistics Retention = 1 years
Messages = Daemon
# DirAddress = 192.168.12.101
}
JobDefs {
Name = "Computer1Job"
Type = Backup
Level = Incremental
Client = Computer1-fd
FileSet = "Computer1Set"
Schedule = "WeeklyCycle"
Storage = Computer1Device
Messages = Standard
Pool = File
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
#
# Define the main nightly save backup job
# By default, this job will back up to disk in /nonexistant/path/to/file/archive/dir
Job {
Name = "Computer1Daily"
JobDefs = "Computer1Job"
Accurate = yes
}
#Job {
# Name = "BackupClient2"
# Client = buserver2-fd
# JobDefs = "DefaultJob"
#}
# Backup the catalog database (after the nightly save)
Job {
Name = "BackupCatalog"
JobDefs = Computer1Job
#JobDefs = "DefaultJob"
Level = Full
FileSet = "Catalog"
Schedule = "WeeklyCycleAfterBackup"
# This creates an ASCII copy of the catalog
# Arguments to make_catalog_backup.pl are:
# make_catalog_backup.pl <catalog-name>
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula mydbpassword"
# This deletes the copy of the catalog
# RunAfterJob /etc/bacula/scripts/delete_catalog_backup
Write Bootstrap = "/var/lib/bacula/%n.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"
Type = Restore
Client = Computer1-fd
FileSet= "Computer1Set"
Storage = Computer1Device
Pool = File
Replace = Always
Messages = Standard
Where = /var/lib/bacula/bacula-Restores
}
# List of files to be backed up
FileSet {
Name = "Computer1Set"
Include {
Options {
Compression=GZIP6
signature=SHA1
Sparse = no
}
#
# Put your list of files here, preceded by 'File =', one per line
# or include an external list with:
#
# File = <file-name
#
# Note: / backs up everything on the root partition.
# if you have other partitions such as /usr or /home
# you will probably want to add them too.
#
# By default this is defined to point to the Bacula binary
# directory to give a reasonable FileSet to backup to
# disk storage during initial testing.
#
File = /
File = /boot
}
#
# If you backup the root directory, the following two excluded
# files can be useful
#
Exclude {
File = /var/lib/bacula
File = /dev
File = /run
File = /sys
File = /proc
File = /media
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /home/username/.icedove
File = /home/MyUserName/.google
}
}
#
# When to do the backups, full backup on first sunday of the month,
# differential (i.e. incremental since full) every other sunday,
# and incremental backups other days
Schedule {
Name = "WeeklyCycle"
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 23:30
}
# This is the backup of the catalog
FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = "/var/lib/bacula/bacula.sql"
}
}
# Client (File Services) to backup
Client {
Name = Computer1-fd
Address = Computer1
FDPort = 9102
Catalog = Catalog
Password = "some password" # password for FileDaemon
# Original Default Values
# File Retention = 70 days # 30 days
Job Retention = 70 days # six months
AutoPrune = yes # Prune expired Jobs/Files
}
#
# Second Client (File Services) to backup
# You should change Name, Address, and Password before using
#
#Client {
# Name = buserver2-fd
# Address = localhost2
# FDPort = 9102
# Catalog = MyCatalog
# Password = "some password" # 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 = Computer1Device
# Do not use "localhost" here
Address = buserver # N.B. Use a fully qualified name here
SDPort = 9103
Password = "some password"
Device = Computer1Device
Media Type = File
}
# Definition of DDS tape storage device
#Storage {
# Name = DDS-4
# Do not use "localhost" here
# Address = localhost # N.B. Use a fully qualified name here
# SDPort = 9103
# Password = "some 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
#}
# Generic catalog service
Catalog {
Name = Catalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport = 5432
dbname = "bacula"; DB Address = ""; dbuser = "bacula"; dbpassword = "mydb Password"
}
# Reasonable message delivery -- send most everything to email address
# and to the console
Messages {
Name = Standard
#
# 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 = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = root = all, !skipped
operator = root = mount
console = all, !skipped, !saved
#
# WARNING! the following will create a file that you must cycle from
# time to time as it will grow indefinitely. However, it will
# also keep all your messages if they scroll off the console.
#
append = "/var/log/bacula/bacula.log" = all, !skipped
catalog = all
}
#
# Message delivery for daemon messages (no job).
Messages {
Name = Daemon
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root = all, !skipped
console = all, !skipped, !saved
append = "/var/log/bacula/bacula.log" = all, !skipped
}
# Default pool definition
Pool {
Name = Default
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
}
# File Pool definition
Pool {
Name = File
Pool Type = Backup
Maximum Volume Jobs = 2
Action On Purge = Truncate
Recycle = yes # Bacula can automatically recycle Volumes
Recycle Oldest Volume = yes
AutoPrune = yes # Prune expired volumes
Volume Retention = 70 days # Default was one year
Maximum Volume Bytes = 0 # Limit Volume size to something reasonable
Maximum Volumes = 100 # Limit number of Volumes in Pool
LabelFormat = "Computer1Vol_"
}
# Scratch pool definition
Pool {
Name = Scratch
Pool Type = Backup
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = buserver-bat
Password = "some password"
CommandACL = status, .status
}
Console {
Name = buserver-mon
Password = "some password"
CommandACL = status, .status
}
Console {
Name = Computer1-bat
Password = "some password"
CommandACL = status, .clients, .jobs, .pools, .storage, .filesets, .messages, run
ClientACL = *all* # you can restrict to a specific host
CatalogACL = *all*
JobACL = *all*
StorageACL = *all*
ScheduleACL = *all*
PoolACL = *all*
FileSetACL = *all*
}
I like this software but I found it was hard to make it work ... but after this issue is solved
I know it will work for years without a glitch !
Please, any idea I can try ?