]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/restore-disk-seek-test
Update restore-disk-seek
[bacula/bacula] / regress / tests / restore-disk-seek-test
1 #!/bin/sh
2 #
3 # Run a backup of the full bacula build directory, but with the
4 #   Maximum File Size set. Then do a restore of a few files to kick in
5 #   disk seeking (not yet enabled), and ensure that the restored files
6 #   match. Even though disk seeking is not yet enabled, this is a good test,
7 #   and once it is enabled, this will test it.
8 #
9 TestName="restore-disk-seek-test"
10 JobName=restore-disk-seek
11 . scripts/functions
12 set_debug 1
13
14 scripts/cleanup
15 scripts/copy-test-confs
16 echo "${cwd}/tmp/build" >/tmp/file-list
17 rm -rf ${cwd}/tmp/build
18 mkdir ${cwd}/tmp/build
19 # Copy only the .c files (to be restored)
20 #  set files to "*.c" for all c files
21 files="ua_tree.c ua_update.c"
22 # files="*.c"
23 for i in ${files}; do
24    cp -p ${cwd}/build/src/dird/${i} ${cwd}/tmp/build
25 done
26 cd ${cwd}/tmp/build
27 ls >../1
28 cd ..
29 sed s%\^%${cwd}/tmp/build/% 1 >restore-list
30 #
31 # At this point restore-list contains the list
32 #  of files we will restore
33 #
34 rm -f 1
35 cd ${cwd}
36 #
37 # Now arrange to backup *everything* 
38 #
39 rm -rf  ${cwd}/tmp/build
40 mkdir ${cwd}/tmp/build
41 cp -fp ${cwd}/build/src/dird/* ${cwd}/tmp/build
42 #
43 # Enable MaximumFileSize to ensure lots of JobMedia records and thus
44 #  lots of seeking
45 #
46 cp ${cwd}/bin/bacula-sd.conf ${cwd}/tmp/1
47 sed "s%# Maximum File Size%  Maximum File Size%" ${cwd}/tmp/1 >${cwd}/bin/bacula-sd.conf
48
49 change_jobname CompressedTest $JobName
50 start_test
51
52 cat <<END_OF_DATA >tmp/bconcmds
53 @$out /dev/null
54 messages
55 @$out tmp/log1.out
56 label storage=File volume=TestVolume001
57 run job=$JobName yes
58 wait
59 messages
60 @# 
61 @# now do a restore
62 @#
63 @$out tmp/log2.out
64 setdebug level=30 fd     
65 setdebug level=10 storage=File
66 sql
67 @# print the JobMedia records
68 select * from JobMedia;
69
70 restore bootstrap=${cwd}/tmp/kern.bsr where=${cwd}/tmp/bacula-restores storage=File
71 7
72 <${cwd}/tmp/restore-list
73
74 yes
75 wait
76 messages
77 @$out
78 quit
79 END_OF_DATA
80
81 run_bacula
82 check_for_zombie_jobs storage=File
83 stop_bacula
84
85 # Now setup a control directory of only what we *should* restore
86 rm -rf ${cwd}/tmp/build
87 mkdir  ${cwd}/tmp/build
88 for i in ${files}; do
89    cp -p ${cwd}/build/src/dird/${i} ${cwd}/tmp/build
90 done
91
92 check_two_logs
93 check_restore_tmp_build_diff
94 end_test