From 8ce5fd38f0cff237755db8b1761ef8e827aaf00c Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Sat, 30 Aug 2008 09:57:49 +0000 Subject: [PATCH] Partial work on virtual-backup2-test git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7526 91ce42f0-d328-0410-95d8-f526ca767f89 --- regress/scripts/bacula-dir-virtual.conf.in | 168 +++++++++++++++++++++ regress/scripts/bacula-sd-virtual.conf.in | 86 +++++++++++ regress/scripts/copy-virtual-confs | 8 + regress/scripts/do_sed | 2 + regress/tests/virtual-backup2-test | 27 +++- 5 files changed, 283 insertions(+), 8 deletions(-) create mode 100644 regress/scripts/bacula-dir-virtual.conf.in create mode 100644 regress/scripts/bacula-sd-virtual.conf.in create mode 100755 regress/scripts/copy-virtual-confs diff --git a/regress/scripts/bacula-dir-virtual.conf.in b/regress/scripts/bacula-dir-virtual.conf.in new file mode 100644 index 0000000000..d58bbeed3d --- /dev/null +++ b/regress/scripts/bacula-dir-virtual.conf.in @@ -0,0 +1,168 @@ +# +# 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 1.39 +# +# 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 = @hostname@-dir + DIRPort = @dirport@ # where we listen for UA connections + QueryFile = "@scriptdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + Maximum Concurrent Jobs = 4 + Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" + Messages = Daemon +} + +# +# Define the main nightly save backup job +# By default, this job will back up to disk in @tmpdir@ +Job { + Name = "NightlySave" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = DiskChanger + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + + +# Standard Restore template, to be changed by Console program +Job { + Name = "RestoreFiles" + Type = Restore + Client=@hostname@-fd + FileSet="Full Set" + Storage = DiskChanger + Messages = Standard + Pool = Default + Where = @tmpdir@/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Full Set" + Include { Options { signature=MD5 } + File = <@tmpdir@/file-list + } +} + + +# +# 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 1:05 + Run = Differential 2nd-5th sun at 1:05 + Run = Incremental mon-sat at 1:05 +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd + Address = @hostname@ + FDPort = @fdport@ + Catalog = MyCatalog + Password = "xevrjURYoCHhn26RaJoWbeWXEY/a3VqGKp/37tgWiuHc" # password for FileDaemon + File Retention = 30d # 30 days + Job Retention = 180d # six months + AutoPrune = yes # Prune expired Jobs/Files + Maximum Concurrent Jobs = 4 +} + +# Definition of DDS Virtual tape disk storage device +Storage { + Name = DiskChanger + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = DiskChanger # must be same as Device in Storage daemon + Media Type = DiskChangerMedia # must be same as MediaType in Storage daemon + Maximum Concurrent Jobs = 4 + Autochanger = yes +} + +# Definition of file storage device +Storage { + Name = File + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = FileStorage + Media Type = File + Maximum Concurrent Jobs = 5 +} + + +# Generic catalog service +Catalog { + Name = MyCatalog + @libdbi@ + dbname = @db_name@; user = @db_user@; password = "@db_password@" +} + +# Reasonable message delivery -- send most everything to email address +# and to the console +Messages { + Name = Standard + mailcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression Job %j\) %r\" -s \"Regression: %t %e of %c %l\" %r" + operatorcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression Job %j\) %r\" -s \"Regression: Intervention needed for %j\" %r" +# MailOnError = @job_email@ = all, !terminate +# operator = @job_email@ = mount + console = all, !skipped, !terminate, !restored +# +# 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 the scroll off the console. +# + append = "@working_dir@/log" = all, !skipped + catalog = all, !skipped +} + +# +# Message delivery for daemon messages (no job). +Messages { + Name = Daemon + mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula regression\) %r\" -s \"Regression daemon message\" %r" +# mail = @job_email@ = all, !skipped + console = all, !skipped, !saved + append = "@working_dir@/log" = all, !skipped + catalog = 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 = 365d # one year + NextPool = Full +} + +Pool { + Name = Full + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year + Storage = DiskChanger +} diff --git a/regress/scripts/bacula-sd-virtual.conf.in b/regress/scripts/bacula-sd-virtual.conf.in new file mode 100644 index 0000000000..22b44d158d --- /dev/null +++ b/regress/scripts/bacula-sd-virtual.conf.in @@ -0,0 +1,86 @@ +# +# Default Bacula Storage Daemon Configuration file +# +# For Bacula release 1.39 +# +# 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 = @hostname@-sd + SDPort = @sdport@ # Director's port + WorkingDirectory = "@working_dir@" + Pid Directory = "@piddir@" + Subsys Directory = "@subsysdir@" +} + +# +# List Directors who are permitted to contact Storage daemon +# +Director { + Name = @hostname@-dir + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" +} + +# +# Devices supported by this Storage daemon +# To connect, the Director's bacula-dir.conf must have the +# same Name and MediaType. +# +Autochanger { + Name = DiskChanger + Changer Device = @disk_drive@/conf + Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d" + Device = Drive-0, Drive-1 +} + +Device { + Name = Drive-0 # + Device Type = File + Media Type = DiskChangerMedia + Archive Device = @disk_drive@/drive0 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 0 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + +Device { + Name = Drive-1 # + Device Type = File + Media Type = DiskChangerMedia + Archive Device = @disk_drive@/drive1 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 1 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + + +Device { + Name = FileStorage + Media Type = File + Archive Device = @tmpdir@ + LabelMedia = yes; # lets Bacula label unlabeled media + Random Access = Yes; + AutomaticMount = yes; # when device opened, read it + RemovableMedia = no; + AlwaysOpen = no; +} + +# +# Send all messages to the Director, +# mount messages also are sent to the email address +# +Messages { + Name = Standard + director = @hostname@-dir = all, !terminate +} diff --git a/regress/scripts/copy-virtual-confs b/regress/scripts/copy-virtual-confs new file mode 100755 index 0000000000..3fd3e4868e --- /dev/null +++ b/regress/scripts/copy-virtual-confs @@ -0,0 +1,8 @@ +#!/bin/sh +# +# Setup for using the Virtual Disk Changer (simulates tape changer) +# +/bin/cp -f scripts/bacula-dir-virtual.conf bin/bacula-dir.conf +/bin/cp -f scripts/bacula-sd-virtual.conf bin/bacula-sd.conf +/bin/cp -f scripts/test-bacula-fd.conf bin/bacula-fd.conf +/bin/cp -f scripts/test-console.conf bin/bconsole.conf diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index 49ea857646..b8714c36ce 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -26,6 +26,7 @@ sed -f ${out} ${cwd}/scripts/bacula-dir-2client.conf.in >${cwd}/scripts/bacula-d sed -f ${out} ${cwd}/scripts/bacula-dir-fifo.conf.in >${cwd}/scripts/bacula-dir-fifo.conf sed -f ${out} ${cwd}/scripts/bacula-dir-strip.conf.in >${cwd}/scripts/bacula-dir-strip.conf sed -f ${out} ${cwd}/scripts/bacula-dir-migration.conf.in >${cwd}/scripts/bacula-dir-migration.conf +sed -f ${out} ${cwd}/scripts/bacula-dir-virtual.conf.in >${cwd}/scripts/bacula-dir-virtual.conf sed -f ${out} ${cwd}/scripts/win32-bacula-dir-tape.conf.in >${cwd}/scripts/win32-bacula-dir-tape.conf sed -f ${out} ${cwd}/scripts/win32-bacula-dir.conf.in >${cwd}/scripts/win32-bacula-dir.conf sed -f ${out} ${cwd}/scripts/bacula-sd-tape.conf.in >${cwd}/scripts/bacula-sd-tape.conf @@ -33,6 +34,7 @@ sed -f ${out} ${cwd}/scripts/ansi-sd-tape.conf.in >${cwd}/scripts/ansi-sd-tape.c sed -f ${out} ${cwd}/scripts/bacula-sd-fifo.conf.in >${cwd}/scripts/bacula-sd-fifo.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2tape.conf.in >${cwd}/scripts/bacula-sd-2tape.conf sed -f ${out} ${cwd}/scripts/bacula-sd-migration.conf.in >${cwd}/scripts/bacula-sd-migration.conf +sed -f ${out} ${cwd}/scripts/bacula-sd-virtual.conf.in >${cwd}/scripts/bacula-sd-virtual.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2disk.conf.in >${cwd}/scripts/bacula-sd-2disk.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2drive.conf.in >${cwd}/scripts/bacula-sd-2drive.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2disk-drive.conf.in >${cwd}/scripts/bacula-sd-2disk-drive.conf diff --git a/regress/tests/virtual-backup2-test b/regress/tests/virtual-backup2-test index 0a0029d703..39cddf57bf 100755 --- a/regress/tests/virtual-backup2-test +++ b/regress/tests/virtual-backup2-test @@ -11,7 +11,7 @@ JobName=Vbackup scripts/cleanup -scripts/copy-migration-confs +scripts/copy-virtual-confs scripts/prepare-disk-changer echo "${cwd}/build" >${cwd}/tmp/file-list @@ -30,12 +30,13 @@ cat <${cwd}/tmp/bconcmds messages @$out ${cwd}/tmp/log1.out setdebug level=150 storage=DiskChanger -label storage=DiskChanger volume=ChangerVolume001 slot=1 Pool=Full drive=0 +label storage=DiskChanger volume=ChangerVolume001 slot=1 Pool=Default drive=0 label storage=DiskChanger volume=ChangerVolume002 slot=2 Pool=Full drive=0 label storage=DiskChanger volume=ChangerVolume003 slot=3 Pool=Full drive=0 setdebug level=0 storage=DiskChanger @# run several jobs -run job=$JobName level=Full yes +@exec "sh -c 'date > ${cwd}/build/date'" +run job=$JobName level=Full storage=DiskChanger yes wait messages list jobs @@ -49,6 +50,7 @@ run job=$JobName level=Differential storage=DiskChanger yes wait messages list jobs +@exec "sh -c 'date > ${cwd}/build/date'" @exec "sh -c 'touch ${cwd}/build/src/dird/*.o'" run job=$JobName level=Incremental storage=DiskChanger yes wait @@ -64,17 +66,20 @@ unmark * mark * done yes +wait list volumes @#setdebug level=100 dir -@# should Consolidate Full, Differential and Incremental -@#setdebug level=51 storage=DiskChanger +@# +@# Now do a Virtual backup +@# +setdebug level=151 storage=DiskChanger run job=$JobName level=VirtualFull storage=DiskChanger yes wait messages list volumes list jobs @# -@# now do a restore +@# now do a restore of the Virtual backup @# @$out ${cwd}/tmp/log2.out restore where=${cwd}/tmp/bacula-restores select storage=DiskChanger @@ -83,6 +88,7 @@ mark * done yes wait +@# Move Volume to Default pool update Volume=ChangerVolume002 11 Default @@ -90,12 +96,17 @@ list volumes list jobs messages @exec "sh -c 'touch ${cwd}/build/src/dird/*.o'" +@# +@# Do an incremental on top of the Virtual Full +@# run job=$JobName level=Incremental storage=DiskChanger yes wait messages list jobs list volumes +@# @# Now do another Consolidation +@# setdebug level=150 storage=DiskChanger run job=$JobName level=VirtualFull storage=DiskChanger yes wait @@ -103,7 +114,7 @@ messages list volumes list jobs @# -@# now do a restore +@# now do a restore should restore from new Virtual backup @# @$out ${cwd}/tmp/log2.out setdebug level=0 storage=DiskChanger @@ -121,7 +132,7 @@ quit END_OF_DATA run_bacula -check_for_zombie_jobs storage=File +check_for_zombie_jobs storage=DiskChanger stop_bacula check_two_logs -- 2.39.5