#!/bin/sh # # Run a accurate backup of the Bacula build directory # then restore it. # TestName="accurate-test" JobName=backup . scripts/functions scripts/cleanup copy_test_confs /bin/cp -f scripts/bacula-dir.conf.accurate bin/bacula-dir.conf sed -i s/all,/all,saved,/ bin/bacula-fd.conf change_jobname Client1 $JobName # cleanup rm -rf ${cwd}/build/accurate.new rm -rf ${cwd}/build/accurate # add extra files mkdir ${cwd}/build/accurate echo "test test" > ${cwd}/build/accurate/xxx echo "test test" > ${cwd}/build/accurate/yyy echo "test test" > ${cwd}/build/accurate/zzz echo ${cwd}/build > ${cwd}/tmp/file-list start_test cat <${cwd}/tmp/bconcmds @output /dev/null messages label volume=TestVolume001 storage=File pool=Default messages END_OF_DATA run_bacula cat <${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log1.out run job=$JobName yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out restore fileset=FS_TESTJOB where=${cwd}/tmp/bacula-restores select all done yes wait messages @$out quit END_OF_DATA ################################################################ # First : We just run full and restore to compare if all is ok ################################################################ run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores ################################################################ # Now do a second backup after making few changes ################################################################ rm ${cwd}/build/accurate/xxx # delete a file run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores ################################################################ # Now do a third backup after making few changes ################################################################ # some files will have disappear, others have their old mtime/ctime mv ${cwd}/build/accurate ${cwd}/build/accurate.new run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores ################################################################ # Now do an other test in differential mode ################################################################ cat <${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log1.out run job=$JobName level=differential yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out restore fileset=FS_TESTJOB where=${cwd}/tmp/bacula-restores select all done yes wait messages @$out quit END_OF_DATA run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores ################################################################ # Now do an other test in differential mode + incremental ################################################################ # make some changes mv ${cwd}/build/accurate.new ${cwd}/build/accurate cat <${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log1.out run job=$JobName yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out restore fileset=FS_TESTJOB where=${cwd}/tmp/bacula-restores select all done yes wait messages @$out quit END_OF_DATA run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores ################################################################ # Now do a test with other attributes (owner, gid, rights) ################################################################ cat <${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log1.out run job=backup_advance yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out restore fileset=FS_TESTJOB_ADVANCE where=${cwd}/tmp/bacula-restores select all done yes wait messages @$out quit END_OF_DATA run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores ################################################################ # Use the p option for verify ################################################################ chmod 400 ${cwd}/build/accurate/yyy cat <${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log1.out run job=backup_advance yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out restore fileset=FS_TESTJOB_ADVANCE where=${cwd}/tmp/bacula-restores select all done yes wait messages @$out quit END_OF_DATA run_bconsole check_for_zombie_jobs storage=File check_two_logs check_restore_diff rm -rf ${cwd}/tmp/bacula-restores if ! grep 'st_mode differ' tmp/log1.out > /dev/null then bstat=2 fi stop_bacula end_test