From: Eric Bollengier Date: Mon, 9 Jun 2008 20:59:55 +0000 (+0000) Subject: ebl rename faketape to vtape X-Git-Tag: Release-7.0.0~4475 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2282073843dd5f881f3d1f5f7ae9d818f43440f6;p=bacula%2Fbacula ebl rename faketape to vtape git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7125 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/regress/README.faketape b/regress/README.faketape deleted file mode 100644 index ad98176a3d..0000000000 --- a/regress/README.faketape +++ /dev/null @@ -1,56 +0,0 @@ -HOWTO SETUP A FAKE TAPE ENVIRONMENT ------------------------------------ - -Introduction: -------------- - -The fake tape driver attempts to simulate a tape drive from a low level -aspect. It emulates tape operations like fsf, bsf, weom, variable bloc, etc.. - -For that the driver implements 5 operations : - - read - - write - - open - - close - - ioctl - -If your bacula's binaries are compiled with fake tape support, you won't be -able to use real tape drive. - - -Setup the regress environment for tape tests --------------------------------------------- - -Be sure to configure your config file with this : - -TAPE_DRIVE="/tmp/drive0" -TAPE_DRIVE1="/tmp/drive1" -DRIVE1=0 -DRIVE2=1 -SLOT1=1 -SLOT2=2 -AUTOCHANGER="/tmp/ach_config" -USE_FAKETAPE=yes -AUTOCHANGER_SCRIPT=disk-changer - -You can remplace /tmp/ by what you want. - -Then, the /tmp/ach_config can contain this to simulate 2 drives : -maxdrive=2 -maxslot=10 - -And type "make setup" - -That all ! - - -Setup a quite big autochanger (5 drives and 80 slots) ------------------------------------------------------ - -Just run "./tests/faketape-test-changer" test to use right configuration files, -then you can use "./scripts/prepare-fake-autochanger" script to initialize the -dummy autochanger. - - - - diff --git a/regress/README.vtape b/regress/README.vtape new file mode 100644 index 0000000000..4e6c88219e --- /dev/null +++ b/regress/README.vtape @@ -0,0 +1,52 @@ +HOWTO SETUP A FAKE TAPE ENVIRONMENT +----------------------------------- + +Introduction: +------------- + +The fake tape driver (vtape) attempts to simulate a tape drive from a low level +aspect. It emulates tape operations like fsf, bsf, weom, variable bloc, etc.. + +For that the driver implements 5 operations : + - read + - write + - open + - close + - ioctl + +Setup the regress environment for tape tests +-------------------------------------------- + +Be sure to configure your config file with this : + +TAPE_DRIVE="/tmp/drive0" +TAPE_DRIVE1="/tmp/drive1" +DRIVE1=0 +DRIVE2=1 +SLOT1=1 +SLOT2=2 +AUTOCHANGER="/tmp/ach_config" +USE_VTAPE=yes +AUTOCHANGER_SCRIPT=disk-changer + +You can remplace /tmp/ by what you want. + +Then, the /tmp/ach_config can contain this to simulate 2 drives : +maxdrive=2 +maxslot=10 + +And type "make setup" + +That all ! + + +Setup a quite big autochanger (5 drives and 80 slots) +----------------------------------------------------- + +Just run "./tests/vtape-test-changer" test to use right configuration files, +then you can use "./scripts/prepare-fake-autochanger" script to initialize the +dummy autochanger. + + + + diff --git a/regress/prototype.conf b/regress/prototype.conf index b822d6b560..5af6ba96f4 100644 --- a/regress/prototype.conf +++ b/regress/prototype.conf @@ -33,9 +33,9 @@ SLOT2=2 TAPE_DRIVE1="/dev/null" # Set this if you are using fake tape driver -#USE_FAKETAPE=--enable-faketape +#USE_VTAPE=yes -# Change this to use disk-changer with faketape +# Change this to use disk-changer with vtape AUTOCHANGER_SCRIPT=mtx-changer # This must be the path to the autochanger including its name diff --git a/regress/scripts/bacula-dir-faketape.conf.in b/regress/scripts/bacula-dir-faketape.conf.in deleted file mode 100644 index fb1f4011f1..0000000000 --- a/regress/scripts/bacula-dir-faketape.conf.in +++ /dev/null @@ -1,372 +0,0 @@ -# -# Bacula Director Configuration file -# -# - -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 = 40 - 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 = LTO3 - Messages = Standard - Pool = Default - Maximum Concurrent Jobs = 10 - SpoolData = yes -# Prefer Mounted Volumes = no -} - -Job { - Name = "NightlySave1" - Type = Backup - Client=@hostname@-fd - FileSet="Full Set" - Storage = LTO1 - Messages = Standard - Pool = Default - Write Bootstrap = "@working_dir@/NightlySave1.bsr" - Maximum Concurrent Jobs = 10 - SpoolData = yes -# Prefer Mounted Volumes = no - Client Run Before Job = "/bin/sleep 2" -} - -Job { - Name = "NightlySave2" - Type = Backup - Client=@hostname@-fd - FileSet="Full Set" - Storage = LTO1 - Messages = Standard - Pool = Default - Write Bootstrap = "@working_dir@/NightlySave2.bsr" - Maximum Concurrent Jobs = 10 - SpoolData = yes -# Prefer Mounted Volumes = no -} - -Job { - Name = "NightlySave3" - Type = Backup - Client=@hostname@-fd - FileSet="Full Set" - Storage = LTO1 - Messages = Standard - Pool = Default - Write Bootstrap = "@working_dir@/NightlySave3.bsr" - Maximum Concurrent Jobs = 10 -# Prefer Mounted Volumes = no -} - -Job { - Name = "VerifyTape" - Type = Verify - Level = VolumeToCatalog - Client=@hostname@-fd - FileSet="Verify Set" - Storage = LTO1 - 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 = LTO1 - 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 - } -} - -FileSet { - Name = "Verify Set" - Include { - Options { - signature=MD5 - verify=pins1 - } - File = <@tmpdir@/file-list - } -} - - -# 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 = 10 -} - -# Client (File Services) to backup -Client { - Name = @hostname@-fd2 - Address = @hostname@ - FDPort = @fdport@2 - 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 = 10 -} - -# Client (File Services) to backup -Client { - Name = @hostname@-fd3 - Address = @hostname@ - FDPort = @fdport@3 - 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 = 10 -} - -# Client (File Services) to backup -Client { - Name = @hostname@-fd4 - Address = @hostname@ - FDPort = @fdport@4 - 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 = 10 -} - -# Client (File Services) to backup -Client { - Name = @hostname@-fd5 - Address = @hostname@ - FDPort = @fdport@4 - 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 = 10 -} - - -Storage { - Name = LTO1 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO - Media Type = LTO1 - Autochanger = yes - Maximum Concurrent Jobs = 50 -} - -Storage { - Name = LTO3 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO - Media Type = LTO3 - Autochanger = yes - Maximum Concurrent Jobs = 50 -} - -################################################################ -# WARNING: Bacula doesn't support this kind of configuration -# This is for testing purpose only !!!!!!!!!!!! -################################################################ - -Storage { - Name = LTO3_0 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO3_0 - Media Type = LTO3 - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -Storage { - Name = LTO3_1 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO3_1 - Media Type = LTO3 - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -Storage { - Name = LTO3_2 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO3_2 - Media Type = LTO3 - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -Storage { - Name = LTO1_3 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO1_3 - Media Type = LTO1 - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -Storage { - Name = LTO1_4 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO1_4 - Media Type = LTO1 - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -Storage { - Name = LTO1_5 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO1_5 - Media Type = LTO1 - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -Storage { - Name = LTO1-ANSI_6 - Address = @hostname@ - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" - Device = LTO1-ANSI_6 - Media Type = LTO1-ANSI - Autochanger = yes - Maximum Concurrent Jobs = 5 -} - -# Definition of File storage device -Storage { - Name = File - Address = @hostname@ # N.B. Use a fully qualified name here - SDPort = @sdport@ - Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon - Device = FileStorage # must be same as Device in Storage daemon - Media Type = FileMedia # must be same as MediaType in Storage daemon - Maximum Concurrent Jobs = 10 -} - -# Generic catalog service -Catalog { - Name = MyCatalog - @libdbi@ - dbname = regress; user = regress; password = "" -} - -# Reasonable message delivery -- send most everything to email address -# and to the console -Messages { - Name = Standard - console = all, !skipped, !terminate, !restored - append = "@working_dir@/log" = all, !skipped - catalog = all, !skipped, !saved -} - -# -# Message delivery for daemon messages (no job). -Messages { - Name = Daemon - console = all, !skipped, !saved - append = "@working_dir@/log" = all, !skipped - catalog = all, !skipped, !saved -} - - -# 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 -} - -Pool { - Name = Full - Pool Type = Backup - Recycle = yes # Bacula can automatically recycle Volumes - AutoPrune = yes # Prune expired volumes - Volume Retention = 365d # one year -} - -Pool { - Name = Inc - Pool Type = Backup - Recycle = yes # Bacula can automatically recycle Volumes - AutoPrune = yes # Prune expired volumes - Volume Retention = 365d # one year -} - -Pool { - Name = Diff - Pool Type = Backup - Recycle = yes # Bacula can automatically recycle Volumes - AutoPrune = yes # Prune expired volumes - Volume Retention = 365d # one year -} - -Pool { - Name = Scratch - Pool Type = Backup - Recycle = yes # Bacula can automatically recycle Volumes - AutoPrune = yes # Prune expired volumes - Volume Retention = 365d # one year - Recycle Pool = Scratch # recycle back here - Cleaning Prefix = CLN -} diff --git a/regress/scripts/bacula-dir-vtape.conf.in b/regress/scripts/bacula-dir-vtape.conf.in new file mode 100644 index 0000000000..fb1f4011f1 --- /dev/null +++ b/regress/scripts/bacula-dir-vtape.conf.in @@ -0,0 +1,372 @@ +# +# Bacula Director Configuration file +# +# + +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 = 40 + 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 = LTO3 + Messages = Standard + Pool = Default + Maximum Concurrent Jobs = 10 + SpoolData = yes +# Prefer Mounted Volumes = no +} + +Job { + Name = "NightlySave1" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = LTO1 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave1.bsr" + Maximum Concurrent Jobs = 10 + SpoolData = yes +# Prefer Mounted Volumes = no + Client Run Before Job = "/bin/sleep 2" +} + +Job { + Name = "NightlySave2" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = LTO1 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave2.bsr" + Maximum Concurrent Jobs = 10 + SpoolData = yes +# Prefer Mounted Volumes = no +} + +Job { + Name = "NightlySave3" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = LTO1 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave3.bsr" + Maximum Concurrent Jobs = 10 +# Prefer Mounted Volumes = no +} + +Job { + Name = "VerifyTape" + Type = Verify + Level = VolumeToCatalog + Client=@hostname@-fd + FileSet="Verify Set" + Storage = LTO1 + 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 = LTO1 + 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 + } +} + +FileSet { + Name = "Verify Set" + Include { + Options { + signature=MD5 + verify=pins1 + } + File = <@tmpdir@/file-list + } +} + + +# 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 = 10 +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd2 + Address = @hostname@ + FDPort = @fdport@2 + 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 = 10 +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd3 + Address = @hostname@ + FDPort = @fdport@3 + 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 = 10 +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd4 + Address = @hostname@ + FDPort = @fdport@4 + 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 = 10 +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd5 + Address = @hostname@ + FDPort = @fdport@4 + 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 = 10 +} + + +Storage { + Name = LTO1 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO + Media Type = LTO1 + Autochanger = yes + Maximum Concurrent Jobs = 50 +} + +Storage { + Name = LTO3 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO + Media Type = LTO3 + Autochanger = yes + Maximum Concurrent Jobs = 50 +} + +################################################################ +# WARNING: Bacula doesn't support this kind of configuration +# This is for testing purpose only !!!!!!!!!!!! +################################################################ + +Storage { + Name = LTO3_0 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO3_0 + Media Type = LTO3 + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +Storage { + Name = LTO3_1 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO3_1 + Media Type = LTO3 + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +Storage { + Name = LTO3_2 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO3_2 + Media Type = LTO3 + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +Storage { + Name = LTO1_3 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO1_3 + Media Type = LTO1 + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +Storage { + Name = LTO1_4 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO1_4 + Media Type = LTO1 + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +Storage { + Name = LTO1_5 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO1_5 + Media Type = LTO1 + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +Storage { + Name = LTO1-ANSI_6 + Address = @hostname@ + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = LTO1-ANSI_6 + Media Type = LTO1-ANSI + Autochanger = yes + Maximum Concurrent Jobs = 5 +} + +# Definition of File storage device +Storage { + Name = File + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = FileStorage # must be same as Device in Storage daemon + Media Type = FileMedia # must be same as MediaType in Storage daemon + Maximum Concurrent Jobs = 10 +} + +# Generic catalog service +Catalog { + Name = MyCatalog + @libdbi@ + dbname = regress; user = regress; password = "" +} + +# Reasonable message delivery -- send most everything to email address +# and to the console +Messages { + Name = Standard + console = all, !skipped, !terminate, !restored + append = "@working_dir@/log" = all, !skipped + catalog = all, !skipped, !saved +} + +# +# Message delivery for daemon messages (no job). +Messages { + Name = Daemon + console = all, !skipped, !saved + append = "@working_dir@/log" = all, !skipped + catalog = all, !skipped, !saved +} + + +# 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 +} + +Pool { + Name = Full + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year +} + +Pool { + Name = Inc + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year +} + +Pool { + Name = Diff + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year +} + +Pool { + Name = Scratch + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year + Recycle Pool = Scratch # recycle back here + Cleaning Prefix = CLN +} diff --git a/regress/scripts/bacula-sd-faketape.conf.in b/regress/scripts/bacula-sd-faketape.conf.in deleted file mode 100644 index 5e62ba65e4..0000000000 --- a/regress/scripts/bacula-sd-faketape.conf.in +++ /dev/null @@ -1,169 +0,0 @@ - -# Bacula Storage Daemon Configuration file with -# dummy Autochanger -# -# - -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 = LTO - Changer Device = @working_dir@/ach/conf - Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d" - Device = LTO3_0, LTO3_1, LTO3_2, LTO1_5, LTO1_3, LTO1_4, LTO1-ANSI_6 -} - - -Device { - Name = LTO3_0 - Media Type = LTO3 - Archive Device = @working_dir@/ach/drive0 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 0 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Maximum File Size = 7M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape -} - -Device { - Name = LTO3_1 - Media Type = LTO3 - Archive Device = @working_dir@/ach/drive1 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 1 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Maximum File Size = 7M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape -} - - -Device { - Name = LTO3_2 - Media Type = LTO3 - Archive Device = @working_dir@/ach/drive2 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 2 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Auto Select = no - Maximum File Size = 7M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape -} - - -Device { - Name = LTO1_3 - Media Type = LTO1 - Archive Device = @working_dir@/ach/drive3 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 3 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Maximum File Size = 7M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape -} - - -Device { - Name = LTO1_4 - Media Type = LTO1 - Archive Device = @working_dir@/ach/drive4 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 4 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Maximum File Size = 10M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape -} - -Device { - Name = LTO1_5 - Media Type = LTO1 - Archive Device = @working_dir@/ach/drive5 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 5 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Maximum File Size = 10M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape - Auto Select = no -} - -Device { - Name = LTO1-ANSI_6 - Media Type = LTO1-ANSI - Archive Device = @working_dir@/ach/drive6 - AutomaticMount = yes; # when device opened, read it - Autochanger = yes - Drive Index = 6 - AlwaysOpen = yes; - RemovableMedia = yes; - @@sbindir@/tape_options - Maximum File Size = 10M - Maximum Volume Size = 30M - Maximum Job Spool Size = 10M - Spool Directory = @working_dir@ - Device Type = Tape - Label Type = ansi -} - - -# -# 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/bacula-sd-vtape.conf.in b/regress/scripts/bacula-sd-vtape.conf.in new file mode 100644 index 0000000000..5e62ba65e4 --- /dev/null +++ b/regress/scripts/bacula-sd-vtape.conf.in @@ -0,0 +1,169 @@ + +# Bacula Storage Daemon Configuration file with +# dummy Autochanger +# +# + +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 = LTO + Changer Device = @working_dir@/ach/conf + Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d" + Device = LTO3_0, LTO3_1, LTO3_2, LTO1_5, LTO1_3, LTO1_4, LTO1-ANSI_6 +} + + +Device { + Name = LTO3_0 + Media Type = LTO3 + Archive Device = @working_dir@/ach/drive0 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 0 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Maximum File Size = 7M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape +} + +Device { + Name = LTO3_1 + Media Type = LTO3 + Archive Device = @working_dir@/ach/drive1 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 1 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Maximum File Size = 7M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape +} + + +Device { + Name = LTO3_2 + Media Type = LTO3 + Archive Device = @working_dir@/ach/drive2 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 2 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Auto Select = no + Maximum File Size = 7M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape +} + + +Device { + Name = LTO1_3 + Media Type = LTO1 + Archive Device = @working_dir@/ach/drive3 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 3 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Maximum File Size = 7M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape +} + + +Device { + Name = LTO1_4 + Media Type = LTO1 + Archive Device = @working_dir@/ach/drive4 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 4 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Maximum File Size = 10M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape +} + +Device { + Name = LTO1_5 + Media Type = LTO1 + Archive Device = @working_dir@/ach/drive5 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 5 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Maximum File Size = 10M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape + Auto Select = no +} + +Device { + Name = LTO1-ANSI_6 + Media Type = LTO1-ANSI + Archive Device = @working_dir@/ach/drive6 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 6 + AlwaysOpen = yes; + RemovableMedia = yes; + @@sbindir@/tape_options + Maximum File Size = 10M + Maximum Volume Size = 30M + Maximum Job Spool Size = 10M + Spool Directory = @working_dir@ + Device Type = Tape + Label Type = ansi +} + + +# +# 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/do_sed b/regress/scripts/do_sed index 0f2df3ab4a..b23e054249 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -41,8 +41,8 @@ sed -f ${out} ${cwd}/scripts/cleanup-2tape.in >${cwd}/scripts/cleanup-2tape sed -f ${out} ${cwd}/scripts/cleanup-2drive.in >${cwd}/scripts/cleanup-2drive sed -f ${out} ${cwd}/scripts/prepare-two-tapes.in >${cwd}/scripts/prepare-two-tapes sed -f ${out} ${cwd}/scripts/bacula-dir.conf.testrunscript.in >${cwd}/scripts/bacula-dir.conf.testrunscript -sed -f ${out} ${cwd}/scripts/bacula-dir-faketape.conf.in >${cwd}/scripts/bacula-dir-faketape.conf -sed -f ${out} ${cwd}/scripts/bacula-sd-faketape.conf.in >${cwd}/scripts/bacula-sd-faketape.conf +sed -f ${out} ${cwd}/scripts/bacula-dir-vtape.conf.in >${cwd}/scripts/bacula-dir-vtape.conf +sed -f ${out} ${cwd}/scripts/bacula-sd-vtape.conf.in >${cwd}/scripts/bacula-sd-vtape.conf sed -f ${out} ${cwd}/scripts/prepare-fake-autochanger.in >${cwd}/scripts/prepare-fake-autochanger sed -f ${out} ${cwd}/scripts/tls-bacula-fd.conf.in >${cwd}/scripts/tls-bacula-fd.conf sed -f ${out} ${cwd}/scripts/tls-bacula-sd.conf.in >${cwd}/scripts/tls-bacula-sd.conf diff --git a/regress/scripts/functions b/regress/scripts/functions index 61d6eb4999..391fc482f6 100644 --- a/regress/scripts/functions +++ b/regress/scripts/functions @@ -56,10 +56,10 @@ if test x${AUTOCHANGER} = x/dev/null ; then fi } -require_faketape() +require_vtape() { -if test x${USE_FAKETAPE} = x ; then - echo "$TestName test needs the faketape driver." +if test x${USE_VTAPE} = x ; then + echo "$TestName test needs the vtape driver." exit 1 fi } @@ -262,7 +262,7 @@ debug_wait() init_drive() { - if test a$USE_FAKETAPE = a; then + if test a$USE_VTAPE = a; then mt -f $1 rewind mt -f $1 weof else diff --git a/regress/scripts/prepare-fake-autochanger.in b/regress/scripts/prepare-fake-autochanger.in index 799dbd2f3f..f4f394d0af 100644 --- a/regress/scripts/prepare-fake-autochanger.in +++ b/regress/scripts/prepare-fake-autochanger.in @@ -6,7 +6,7 @@ . scripts/functions # check if user wants to run this test -if test x$USE_FAKETAPE = x; then +if test x$USE_VTAPE = x; then exit 1 fi diff --git a/regress/tests/faketape-test-changer b/regress/tests/faketape-test-changer deleted file mode 100755 index 93496fc234..0000000000 --- a/regress/tests/faketape-test-changer +++ /dev/null @@ -1,122 +0,0 @@ -#!/bin/sh -# -# Run backups with dummy tape driver -# This test setups an Autochanger with 80 slots -# and 5 drives (3 LTO3 and 2 LTO1) -# -# TAPE_DRIVE="$cwd/working/ach/drive0" -# TAPE_DRIVE1="$cwd/working/ach/drive0" -# AUTOCHANGER="$cwd/working/ach/conf" -# USE_FAKETAPE=--enable-faketape -# AUTOCHANGER_SCRIPT=disk-changer -# - -TestName="faketape-test-changer" -JobName=backup -. scripts/functions - -require_faketape - -scripts/cleanup -scripts/copy-tape-confs -cp scripts/bacula-dir-faketape.conf bin/bacula-dir.conf -cp scripts/bacula-sd-faketape.conf bin/bacula-sd.conf -scripts/prepare-fake-autochanger - -echo "${cwd}/build" >${cwd}/tmp/file-list - -start_test - -when1=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+30))"` -when2=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+45))"` - -clientname=`awk '/Name = .*-fd/ { if (!ok) { print $3 ; ok=1 } }' bin/bacula-dir.conf` - -# Catalog record for cleaning tape "CLN01" successfully created. -# CLN01 | Cleaning - -# Write out bconsole commands -cat <${cwd}/tmp/bconcmds -@output /dev/null -messages -@$out ${cwd}/tmp/log6.out -@#setdebug level=200 storage=LTO1 -label barcodes pool=Scratch slots=1-4 storage=LTO1-ANSI_6 drive=6 -yes -label barcodes pool=Scratch slots=5-40 storage=LTO1 drive=3 -yes -messages -list volumes -END_OF_DATA - -run_bacula -stop_bacula - -cat <${cwd}/tmp/bconcmds -@$out ${cwd}/tmp/log7.out -label barcodes pool=Scratch slots=41-80 storage=LTO3 drive=0 -yes -messages -list volumes -@$out ${cwd}/tmp/log1.out -run storage=LTO3 when="$when1" job=NightlySave pool=Inc yes -run storage=LTO3 when="$when1" job=NightlySave2 pool=Full yes -run storage=LTO3 when="$when1" job=NightlySave1 pool=Default yes - -run storage=LTO1 when="$when1" job=NightlySave pool=Inc yes -run storage=LTO1 when="$when1" job=NightlySave2 pool=Full yes -run storage=LTO1 when="$when1" job=NightlySave1 pool=Default yes -run storage=LTO1 when="$when1" job=NightlySave3 pool=Diff yes - -run storage=LTO1-ANSI_6 when="$when2" job=NightlySave pool=Inc yes -wait -messages -quit -END_OF_DATA - -run_bacula -check_for_zombie_jobs storage=LTO1 $clientname -check_for_zombie_jobs storage=LTO3 $clientname -check_for_zombie_jobs storage=LTO1-ANSI_6 client=$clientname - -touch ${cwd}/build/po/*.po - -cat <${cwd}/tmp/bconcmds -@$out ${cwd}/tmp/log2.out -run storage=LTO1-ANSI_6 job=NightlySave3 pool=Inc yes -wait -messages -@# -@# now do a restore -@# -restore fileset="Full Set" pool=Diff where=${cwd}/tmp/bacula-restores select all done -yes -wait -messages -wait -messages -END_OF_DATA - -run_bconsole -check_for_zombie_jobs storage=LTO1 client=$clientname -check_for_zombie_jobs storage=LTO3 client=$clientname -check_for_zombie_jobs storage=LTO1-ANSI_6 client=$clientname -stop_bacula - -check_two_logs -check_restore_diff - -grep LTO1_5 tmp/log1.out > /dev/null -if test $? = 0; then - echo "AutoSelect option broken" - bstat=1 -fi - -grep 'Error: Re-read' tmp/log1.out > /dev/null -if test $? = 0; then - echo "Found Re-read errors" - bstat=1 -fi - -end_test - diff --git a/regress/tests/vtape-test-changer b/regress/tests/vtape-test-changer new file mode 100755 index 0000000000..de3fdacc59 --- /dev/null +++ b/regress/tests/vtape-test-changer @@ -0,0 +1,122 @@ +#!/bin/sh +# +# Run backups with dummy tape driver +# This test setups an Autochanger with 80 slots +# and 5 drives (3 LTO3 and 2 LTO1) +# +# TAPE_DRIVE="$cwd/working/ach/drive0" +# TAPE_DRIVE1="$cwd/working/ach/drive0" +# AUTOCHANGER="$cwd/working/ach/conf" +# USE_VTAPE=yes +# AUTOCHANGER_SCRIPT=disk-changer +# + +TestName="vtape-test-changer" +JobName=backup +. scripts/functions + +require_vtape + +scripts/cleanup +scripts/copy-tape-confs +cp scripts/bacula-dir-vtape.conf bin/bacula-dir.conf +cp scripts/bacula-sd-vtape.conf bin/bacula-sd.conf +scripts/prepare-fake-autochanger + +echo "${cwd}/build" >${cwd}/tmp/file-list + +start_test + +when1=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+30))"` +when2=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+45))"` + +clientname=`awk '/Name = .*-fd/ { if (!ok) { print $3 ; ok=1 } }' bin/bacula-dir.conf` + +# Catalog record for cleaning tape "CLN01" successfully created. +# CLN01 | Cleaning + +# Write out bconsole commands +cat <${cwd}/tmp/bconcmds +@output /dev/null +messages +@$out ${cwd}/tmp/log6.out +@#setdebug level=200 storage=LTO1 +label barcodes pool=Scratch slots=1-4 storage=LTO1-ANSI_6 drive=6 +yes +label barcodes pool=Scratch slots=5-40 storage=LTO1 drive=3 +yes +messages +list volumes +END_OF_DATA + +run_bacula +stop_bacula + +cat <${cwd}/tmp/bconcmds +@$out ${cwd}/tmp/log7.out +label barcodes pool=Scratch slots=41-80 storage=LTO3 drive=0 +yes +messages +list volumes +@$out ${cwd}/tmp/log1.out +run storage=LTO3 when="$when1" job=NightlySave pool=Inc yes +run storage=LTO3 when="$when1" job=NightlySave2 pool=Full yes +run storage=LTO3 when="$when1" job=NightlySave1 pool=Default yes + +run storage=LTO1 when="$when1" job=NightlySave pool=Inc yes +run storage=LTO1 when="$when1" job=NightlySave2 pool=Full yes +run storage=LTO1 when="$when1" job=NightlySave1 pool=Default yes +run storage=LTO1 when="$when1" job=NightlySave3 pool=Diff yes + +run storage=LTO1-ANSI_6 when="$when2" job=NightlySave pool=Inc yes +wait +messages +quit +END_OF_DATA + +run_bacula +check_for_zombie_jobs storage=LTO1 $clientname +check_for_zombie_jobs storage=LTO3 $clientname +check_for_zombie_jobs storage=LTO1-ANSI_6 $clientname + +touch ${cwd}/build/po/*.po + +cat <${cwd}/tmp/bconcmds +@$out ${cwd}/tmp/log2.out +run storage=LTO1-ANSI_6 job=NightlySave3 pool=Inc yes +wait +messages +@# +@# now do a restore +@# +restore fileset="Full Set" pool=Diff where=${cwd}/tmp/bacula-restores select all done +yes +wait +messages +wait +messages +END_OF_DATA + +run_bconsole +check_for_zombie_jobs storage=LTO1 $clientname +check_for_zombie_jobs storage=LTO3 $clientname +check_for_zombie_jobs storage=LTO1-ANSI_6 $clientname +stop_bacula + +check_two_logs +check_restore_diff + +grep LTO1_5 tmp/log1.out > /dev/null +if test $? = 0; then + echo "AutoSelect option broken" + bstat=1 +fi + +grep 'Error: Re-read' tmp/log1.out > /dev/null +if test $? = 0; then + echo "Found Re-read errors" + bstat=1 +fi + +end_test +