From dfe971b9964020f8a61e9d9e5513cb83e13728c0 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Wed, 20 Feb 2013 16:05:30 +0100 Subject: [PATCH 1/1] Do catalog backups, and try to make truncating work --- modules/bacula/templates/bacula-dir.conf.erb | 72 +++++++++++++++----- modules/bacula/templates/bacula-sd.conf.erb | 12 ++++ modules/bacula/templates/per-client.conf.erb | 23 ++++++- 3 files changed, 88 insertions(+), 19 deletions(-) diff --git a/modules/bacula/templates/bacula-dir.conf.erb b/modules/bacula/templates/bacula-dir.conf.erb index 4555005f..ad433205 100644 --- a/modules/bacula/templates/bacula-dir.conf.erb +++ b/modules/bacula/templates/bacula-dir.conf.erb @@ -188,26 +188,66 @@ Pool { # Generic jobs # ######################################################################## # Backup the catalog database (after the nightly save) -#Job { -# Name = "BackupCatalog" -# JobDefs = "Standardbackup" -# Level = Full -# FileSet="Catalog" -# Schedule = "WeeklyCycleAfterBackup" +Storage { + Name = "<%= bacula_filestor_name %>-catalog" + Address = <%= bacula_storage_address %> + SDPort = <%= bacula_storage_port %> + Password = "<%= bacula_storage_secret %>" + Device = "<%= bacula_filestor_device %>-catalog" + Media Type = "<%= bacula_filestor_name %>-catalog" + Maximum Concurrent Jobs = 10 + +# TLS Enable = yes +# TLS Require = yes +# TLS CA Certificate File = "<%= bacula_ca_path %>" +# # This is a client certificate, used by the director to connect to the storage daemon +# TLS Certificate = "<%= bacula_ssl_client_cert %>" +# TLS Key = "<%= bacula_ssl_client_key %>" +} +Pool { + Name = "poolcatalog-<%=bacula_pool_name%>" + Pool Type = Backup + Storage = "<%=bacula_filestor_name%>-catalog" + AutoPrune = yes + Volume Retention = 2 months + Label Format = "<%= bacula_pool_name %>-catalog.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}" + Volume Use Duration = 23h + Maximum Volume Jobs = 1 + Maximum Volume Bytes = 50G + Action On Purge = Truncate + Recycle = yes + RecyclePool = "poolcataloggraveyard-<%=bacula_pool_name%>" +} +Pool { + Name = "poolcataloggraveyard-<%=bacula_pool_name%>" + Pool Type = Backup + Storage = "<%=bacula_filestor_name%>-catalog" + Recycle = yes + RecyclePool = "poolcataloggraveyard-<%=bacula_pool_name%>" +} + +Job { + Name = "BackupCatalog" + JobDefs = "Standardbackup" + Client = <%=bacula_director_address%>-fd + 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 -# RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog" + RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog" # # This deletes the copy of the catalog -# RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup" -# Write Bootstrap = "/var/lib/bacula/%n.bsr" -# Priority = 15 # run after main backup -# RunScript { -# RunsWhen=After -# RunsOnClient=No -# Console = "purge volume action=all allpools storage=File" -# } -#} + RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup" + Write Bootstrap = "/var/lib/bacula/%n.bsr" + Priority = 15 # run after main backup + Pool = "poolcatalog-<%=bacula_pool_name%>" + RunScript { + RunsWhen=After + RunsOnClient=No + Console = "purge volume action=all allpools storage=%w" + } +} ######################################################################## # And now include all the generated configs # diff --git a/modules/bacula/templates/bacula-sd.conf.erb b/modules/bacula/templates/bacula-sd.conf.erb index b048f8e5..376a883e 100644 --- a/modules/bacula/templates/bacula-sd.conf.erb +++ b/modules/bacula/templates/bacula-sd.conf.erb @@ -46,4 +46,16 @@ Messages { Name = Standard director = <%= bacula_director_name %> = all } + +Device { + Name = "<%= bacula_filestor_device %>-catalog" + Media Type = "<%= bacula_filestor_name %>-catalog" + Archive Device = "<%= bacula_backup_path %>/Catalog" + LabelMedia = yes; + Random Access = Yes; + AutomaticMount = yes; + RemovableMedia = no; + AlwaysOpen = no; +} + @|"sh -c 'for f in /etc/bacula/storage-conf.d/*.conf ; do echo @${f} ; done'" diff --git a/modules/bacula/templates/per-client.conf.erb b/modules/bacula/templates/per-client.conf.erb index 3ceaeff7..7da723a5 100644 --- a/modules/bacula/templates/per-client.conf.erb +++ b/modules/bacula/templates/per-client.conf.erb @@ -20,6 +20,12 @@ Job { Cancel Lower Level Duplicates = yes Cancel Queued Duplicates = yes + + RunScript { + RunsWhen = After + RunsOnClient = No + Console = "purge volume action=all allpools storage=%w" + } } # Client (File Services) to backup @@ -71,7 +77,6 @@ Pool { Name = "poolfull-<%=bacula_pool_name%>-<%= client %>" Pool Type = Backup Storage = "<%=bacula_filestor_name%>-<%= client %>" - Recycle = no AutoPrune = yes Volume Retention = 1 year Label Format = "<%= bacula_pool_name %>-full-<%= client %>.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}" @@ -79,13 +84,14 @@ Pool { Maximum Volume Jobs = 1 Maximum Volume Bytes = 50G Action On Purge = Truncate + Recycle = yes + RecyclePool = "poolgraveyard-<%=bacula_pool_name%>-<%= client %>" } Pool { Name = "pooldiff-<%=bacula_pool_name%>-<%= client %>" Pool Type = Backup Storage = "<%=bacula_filestor_name%>-<%= client %>" - Recycle = no AutoPrune = yes Volume Retention = 6 months Label Format = "<%= bacula_pool_name %>-diff-<%= client %>.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}" @@ -93,13 +99,14 @@ Pool { Maximum Volume Jobs = 1 Maximum Volume Bytes = 50G Action On Purge = Truncate + Recycle = yes + RecyclePool = "poolgraveyard-<%=bacula_pool_name%>-<%= client %>" } Pool { Name = "poolinc-<%=bacula_pool_name%>-<%= client %>" Pool Type = Backup Storage = "<%=bacula_filestor_name%>-<%= client %>" - Recycle = no AutoPrune = yes Volume Retention = 70 days Label Format = "<%= bacula_pool_name %>-inc-<%= client %>.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}" @@ -107,4 +114,14 @@ Pool { Maximum Volume Jobs = 1 Maximum Volume Bytes = 50G Action On Purge = Truncate + Recycle = yes + RecyclePool = "poolgraveyard-<%=bacula_pool_name%>-<%= client %>" +} + +Pool { + Name = "poolgraveyard-<%=bacula_pool_name%>-<%= client %>" + Pool Type = Backup + Storage = "<%=bacula_filestor_name%>-<%= client %>" + Recycle = yes + RecyclePool = "poolgraveyard-<%=bacula_pool_name%>-<%= client %>" } -- 2.39.2