]> git.sur5r.net Git - bacula/bacula/commitdiff
Partial work on virtual-backup2-test
authorKern Sibbald <kern@sibbald.com>
Sat, 30 Aug 2008 09:57:49 +0000 (09:57 +0000)
committerKern Sibbald <kern@sibbald.com>
Sat, 30 Aug 2008 09:57:49 +0000 (09:57 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7526 91ce42f0-d328-0410-95d8-f526ca767f89

regress/scripts/bacula-dir-virtual.conf.in [new file with mode: 0644]
regress/scripts/bacula-sd-virtual.conf.in [new file with mode: 0644]
regress/scripts/copy-virtual-confs [new file with mode: 0755]
regress/scripts/do_sed
regress/tests/virtual-backup2-test

diff --git a/regress/scripts/bacula-dir-virtual.conf.in b/regress/scripts/bacula-dir-virtual.conf.in
new file mode 100644 (file)
index 0000000..d58bbee
--- /dev/null
@@ -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 (file)
index 0000000..22b44d1
--- /dev/null
@@ -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 (executable)
index 0000000..3fd3e48
--- /dev/null
@@ -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
index 49ea8576464e8e9a88fdfd1d3097a69e8293c236..b8714c36ce882b5bee140ee9fe52798595225c9f 100755 (executable)
@@ -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
index 0a0029d7039d6566eed618e89ff7f84fb6196943..39cddf57bf3af785fb8cd7ce7e5f6447b2a05deb 100755 (executable)
@@ -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 <<END_OF_DATA >${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