Hi,
I have two questions about doing backups to harddisk with bacula. I'll put
them in seperate emails to keep this clean but they are somewhat related:
1st - What is a good "volume/poll" setup? (Experience question)
2nd - Why does my solution now only use inc-0003? (Config question).
I'll use this email for the first question:
I have an almost working solution (execpt for email 2). I used the default
configs and adjusted them with the aid the examples in the manual. I'm just
not sure I made some good choices. For example I would now like to add
another machine and need to change Pool parameters to make this work.
Because the number of clients is directly tied to "Max Volume Jobs" (#client
* #needed_volumes". Same for "Maximum Volumes" (#clients * #iwant-to-keep).
Question:
Who has a working/extenable configuration? I'm more interested in the idea
behind it than the actual config but the config may help to build it. But
it's the idea's and insight I'm looking for (bacula manual can help me with
the config).
Some extra info:
My site looks like this; 3 clients. Client 1 also tripples as director and
storage. Like this:
[CLIENT2]--+
+--[INTERNET]--[CLIENT1/DIR/STORAGE]
[CLIENT3]--+
Client 2 and client 3 are Slackware Linux and client 1 is FreeBSD.
The storage has 500GB disk at its disposal (a second is standby if I need
more space).
Current configs are attached.
J.
#
# Default Bacula Director Configuration file
#
# The only thing that MUST be changed is to add one or more
# file or directory names in the Include directive of the
# FileSet resource.
#
# For Bacula release 2.2.4 (14 September 2007) -- freebsd 6.2-RELEASE
#
# You might also want to change the default email address
# from root to your address. See the "mail" and "operator"
# directives in the Messages resource.
#
Director { # define myself
Name = client1-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "secret" # Console password
Messages = Daemon
}
JobDefs {
Name = "DefaultJob"
Type = Backup
FileSet = "Client1 Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = Default
Full Backup Pool = Full-Pool
Incremental Backup Pool = Inc-Pool
Differential Backup Pool = Diff-Pool
Priority = 10
}
#
# Backup client1
Job {
Name = "client1-job"
JobDefs = "DefaultJob"
Client = client1-fd
FileSet = "Client1 Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = Default
Full Backup Pool = Full-Pool
Incremental Backup Pool = Inc-Pool
Differential Backup Pool = Diff-Pool
Write Bootstrap = "/var/bacula/working/client1.bsr"
Priority = 20
}
#
# Backup client2
Job {
Name = "client2-job"
JobDefs = "DefaultJob"
Client = client2-fd
FileSet = "Client 2 Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = Default
Full Backup Pool = Full-Pool
Incremental Backup Pool = Inc-Pool
Differential Backup Pool = Diff-Pool
Write Bootstrap = "/var/bacula/working/client2.bsr"
Priority = 10
}
#
# Backup client3
Job {
Name = "client3-job"
JobDefs = "DefaultJob"
Client = client3-fd
FileSet = "Clien3 Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = Default
Full Backup Pool = Full-Pool
Incremental Backup Pool = Inc-Pool
Differential Backup Pool = Diff-Pool
Write Bootstrap = "/var/bacula/working/client3.bsr"
Priority = 15
}
# Backup the catalog database (after the nightly save)
Job {
Name = "BackupCatalog"
Client = client1-fd
JobDefs = "DefaultJob"
Level = Full
FileSet="Catalog"
Schedule = "WeeklyCycleAfterBackup"
Storage = File
Messages = Standard
Pool = Cat-Pool
Full Backup Pool = Cat-Pool
Incremental Backup Pool = Cat-Pool
Differential Backup Pool = Cat-Pool
# This creates an ASCII copy of the catalog
RunBeforeJob = "/etc/bacula/make_catalog_backup bacula bacula"
# This deletes the copy of the catalog
RunAfterJob = "/etc/bacula/delete_catalog_backup"
Write Bootstrap = "/var/bacula/working/BackupCatalog.bsr"
Priority = 25 # 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=client1-fd
FileSet="Client1 Set"
Storage = File
Pool = Default
Messages = Standard
Where = /tmp/bacula-restores
}
# List of files to be backed up
FileSet {
Name = "Client1 Set"
Include {
Options {
signature=SHA1;
compression=GZIP9
}
File = /
File = /usr
File = /var
File = /home
}
Exclude {
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /mnt
}
}
#
# List of files to be backed up
FileSet {
Name = "Client 2 Set"
Include {
Options {
signature=SHA1;
compression=GZIP9
}
File = /
File = /boot
File = /usr
File = /var
File = /home
}
Exclude {
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /mnt
}
}
#
# List of files to be backed up
FileSet {
Name = "Clien3 Set"
Include {
Options {
signature=SHA1;
compression=GZIP9
}
File = /
File = /boot
File = /usr
File = /var
File = /home
}
Exclude {
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /mnt
}
}
#
# 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 2:05
Run = Differential 2nd-5th sun at 2:05
Run = Incremental mon-sat at 2:05
}
# This schedule does the catalog. It starts after the WeeklyCycle
Schedule {
Name = "WeeklyCycleAfterBackup"
Run = Full sun-sat at 2:10
}
# This is the backup of the catalog
FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = /var/bacula/working/bacula.sql
}
}
# Client (File Services) to backup
Client {
Name = client1-fd
Address = client1
FDPort = 9102
Catalog = MyCatalog
Password = "secret" # password for FileDaemon
File Retention = 60 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
# Client (File Services) to backup
Client {
Name = client2-fd
Address = client2.mydomain.nl
FDPort = 9102
Catalog = MyCatalog
Password = "secret" # password for FileDaemon
File Retention = 60 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
# Client (File Services) to backup
Client {
Name = client3-fd
Address = client3.mydomain.nl
FDPort = 9102
Catalog = MyCatalog
Password = "secret" # password for FileDaemon
File Retention = 60 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 = client1 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "secret"
Device = FileStorage
Media Type = File
}
# Definition of DDS tape storage device
#Storage {
# Name = DDS-4
# Do not use "localhost" here
# Address = client1 # N.B. Use a fully qualified name here
# SDPort = 9103
# Password = "secret" # 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 = client1 # N.B. Use a fully qualified name here
# SDPort = 9103
# Password = "secret"
# Device = "Exabyte 8mm"
# MediaType = "8mm"
#}
# Definition of DVD storage device
#Storage {
# Name = "DVD"
# Do not use "localhost" here
# Address = client1 # N.B. Use a fully qualified name here
# SDPort = 9103
# Password = "secret"
# Device = "DVD Writer"
# MediaType = "DVD"
#}
# Generic catalog service
Catalog {
Name = MyCatalog
dbname = bacula; user = bacula; 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 '[EMAIL PROTECTED]', is better since that tends to
# tell (most) people that its coming from an automated source.
#
mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula:
%t %e of %c %l\" %r"
operatorcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s
\"Bacula: Intervention needed for %j\" %r"
mail = [EMAIL PROTECTED] = all, !skipped
operator = [EMAIL PROTECTED] = 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/bacula/working/log" = all, !skipped
}
#
# Message delivery for daemon messages (no job).
Messages {
Name = Daemon
mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula
daemon message\" %r"
mail = [EMAIL PROTECTED] = all, !skipped
console = all, !skipped, !saved
append = "/var/bacula/working/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
}
# Scratch pool definition
Pool {
Name = Scratch
Pool Type = Backup
}
Pool {
Name = Full-Pool
Pool Type = Backup
Recycle = yes # automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 6 months
Maximum Volume Jobs = 3
Label Format = Full-
Maximum Volumes = 9
}
Pool {
Name = Inc-Pool
Pool Type = Backup
Recycle = yes # automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 20 days
Maximum Volume Jobs = 18
Label Format = Inc-
Maximum Volumes = 7
}
Pool {
Name = Diff-Pool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 40 days
Maximum Volume Jobs = 3
Label Format = Diff-
Maximum Volumes = 10
}
Pool {
Name = Cat-Pool
Pool Type = Backup
Recycle = yes # automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 6 months
Maximum Volume Jobs = 1
Label Format = Cat-
Maximum Volumes = 183
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = client1-mon
Password = "secret"
CommandACL = status, .status
}
#
# Default Bacula File Daemon Configuration file
#
# For Bacula release 2.2.4 (14 September 2007) -- freebsd 6.2-RELEASE
#
# There is not much to change here except perhaps the
# File daemon Name to
#
#
# List Directors who are permitted to contact this File daemon
#
Director {
Name = client1-dir
Password = "secret"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = client1-mon
Password = "secret"
Monitor = yes
}
#
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = client1-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = client1-dir = all, !skipped, !restored
}
#
# Default Bacula Storage Daemon Configuration file
#
# For Bacula release 2.2.4 (14 September 2007) -- freebsd 6.2-RELEASE
#
# You may need to change the name of your tape drive
# on the "Archive Device" directive in the Device
# resource. If you change the Name and/or the
# "Media Type" in the Device resource, please ensure
# that dird.conf has corresponding changes.
#
Storage { # definition of myself
Name = client1-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
Heartbeat Interval = 15 seconds
}
#
# List Directors who are permitted to contact Storage daemon
#
Director {
Name = client1-dir
Password = "secret"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
#
Director {
Name = client1-mon
Password = "secret"
Monitor = yes
}
#
# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
# same Name and MediaType.
#
Device {
Name = FileStorage
Media Type = File
Archive Device = /mnt
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
#
# An autochanger device with two drives
#
#Autochanger {
# Name = Autochanger
# Device = Drive-1
# Device = Drive-2
# Changer Command = "/home/kern/bacula/bin/mtx-changer %c %o %S %a %d"
# Changer Device = /dev/sg0
#}
#Device {
# Name = Drive-1 #
# Drive Index = 0
# Media Type = DLT-8000
# Archive Device = /dev/nst0
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = yes;
# RemovableMedia = yes;
# RandomAccess = no;
# AutoChanger = yes
# #
# # Enable the Alert command only if you have the mtx package loaded
# # Note, apparently on some systems, tapeinfo resets the SCSI controller
# # thus if you turn this on, make sure it does not reset your SCSI
# # controller. I have never had any problems, and smartctl does
# # not seem to cause such problems.
# #
# Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
# If you have smartctl, enable this, it has more info than tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#Device {
# Name = Drive-2 #
# Drive Index = 1
# Media Type = DLT-8000
# Archive Device = /dev/nst1
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = yes;
# RemovableMedia = yes;
# RandomAccess = no;
# AutoChanger = yes
# # Enable the Alert command only if you have the mtx package loaded
# Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
# If you have smartctl, enable this, it has more info than tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#
# A Linux or Solaris tape drive
#
#Device {
# Name = DDS-4 #
# Media Type = DDS-4
# Archive Device = /dev/nrsa0
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = yes;
# RemovableMedia = yes;
# RandomAccess = no;
## Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
## Changer Device = /dev/sg0
## AutoChanger = yes
# # Enable the Alert command only if you have the mtx package loaded
## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
## If you have smartctl, enable this, it has more info than tapeinfo
## Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#
# A FreeBSD tape drive
#
#Device {
# Name = DDS-4
# Description = "DDS-4 for FreeBSD"
# Media Type = DDS-4
# Archive Device = /dev/nsa1
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = yes
# Offline On Unmount = no
# Hardware End of Medium = no
# BSF at EOM = yes
# Backward Space Record = no
# Fast Forward Space File = no
# TWO EOF = yes
# If you have smartctl, enable this, it has more info than tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#
# A OnStream tape drive.
# You need the kernel osst driver 0.9.14 or later, and
# do "mt -f /dev/nosst0 defblksize 32768" once as root.
#
#Device {
# Name = OnStream
# Description = "OnStream drive on Linux"
# Media Type = OnStream
# Archive Device = /dev/nrsa0
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = yes
# Offline On Unmount = no
## The min/max blocksizes of 32768 are *required*
# Minimum Block Size = 32768
# Maximum Block Size = 32768
# If you have smartctl, enable this, it has more info than tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#
# A DVD device
#
#Device {
# Name = "DVD Writer"
# Media Type = DVD
# Device Type = DVD
# Archive Device = /dev/hdc
# LabelMedia = yes; # lets Bacula label unlabeled media
# Random Access = Yes;
# AutomaticMount = yes; # when device opened, read it
# RemovableMedia = yes;
# AlwaysOpen = no;
# MaximumPartSize = 800M;
# RequiresMount = yes;
# MountPoint = /mnt/cdrom;
# MountCommand = "/bin/mount -t iso9660 -o ro %a %m";
# UnmountCommand = "/bin/umount %m";
# SpoolDirectory = /tmp/backup;
# WritePartCommand = "/etc/bacula/dvd-handler %a write %e %v"
# FreeSpaceCommand = "/etc/bacula/dvd-handler %a free"
#}
#
# For OpenBSD OS >= 3.6
#
#Device {
# Name = DDS-3
# Media Type = DDS-3
# Archive Device = /dev/nrst0
# Use MTIOCGET= no
# BSF at EOM = yes
# TWO EOF = no
# AutomaticMount = yes;
# AlwaysOpen = yes;
# RemovableMedia = yes;
# RandomAccess = no;
# If you have smartctl, enable this, it has more info than tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#
# A very old Exabyte with no end of media detection
#
#Device {
# Name = "Exabyte 8mm"
# Media Type = "8mm"
# Archive Device = /dev/nrsa0
# Hardware end of medium = No;
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = Yes;
# RemovableMedia = yes;
# RandomAccess = no;
# If you have smartctl, enable this, it has more info than tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
#}
#
# Send all messages to the Director,
# mount messages also are sent to the email address
#
Messages {
Name = Standard
director = client1-dir = all
}
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users