If you include= or exclude= a directory that is actually a symlink
[matthijs/upstream/backupninja-vserver.git] / handlers / makecd.helper
1 # -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
2
3 HELPERS="$HELPERS makecd:makecd_backup"
4 wizardname="makecd action wizard"
5
6 declare -a makecd_excludes
7
8 makecd_wizard() {
9
10   inputBox "$wizardname" "specify a burner type cd or dvd:"
11   [ $? = 1 ] && return
12   burnertype="burnertype = $REPLY"
13
14   booleanBox "$wizardname" "Make iso image only? or burn"
15   if [ $? = 0 ]; then
16      isoonly="isoonly = yes"
17   else
18      isoonly="isoonly = no"
19   fi
20
21   # backupdir
22   inputBox "$wizardname" "Directory where to store the backups:"
23   [ $? = 1 ] && return
24   backupdir="backupdir = $REPLY"
25
26   inputBox "$wizardname" "what name to give to the image file?"
27   [ $? = 1 ] && return
28   imagefile="imagefile = $REPLY"
29
30   inputBox "$wizardname" "specify a burner device:"
31   [ $? = 1 ] && return
32   device="device = $REPLY"
33
34   # target - root of system to be included
35   inputBox "$wizardname" "root of filesystem for burn:"
36   [ $? = 1 ] && return
37   target="target = $REPLY"
38
39
40    # excludes
41
42   formBegin "$wizardname: excludes" 
43     for ((i=0; i < ${#makecd_excludes[@]} ; i++)); do
44        formItem exclude ${makecd_excludes[$i]}
45     done
46     formItem exclude 
47     formItem exclude 
48     formItem exclude 
49     formItem exclude 
50     formItem exclude 
51     formItem exclude 
52     formItem exclude 
53     formItem exclude 
54     formItem exclude 
55   formDisplay
56   [ $? = 1 ] && return;
57
58   unset makecd_excludes
59   makecd_excludes=($REPLY)
60
61   get_next_filename $configdirectory/20.makecd
62   cat >> $next_filename <<EOF
63
64 # TYP is cd or dvd AS WELL AS the disk inside!!
65 $burnertype
66
67 # not yet supported
68 system = no
69
70 # iso or burn to cd/dvd?
71 $isoonly
72
73 # location for image file
74 $backupdir
75
76 # image filename
77 $imagefile
78
79 # cd/dvd burner device
80 $device
81
82 # dirs/files to include in the backup
83 $target
84
85 # directories/files to be excluded
86 # exclude = /proc
87 # exclude = /sys
88 # exclude = /dev
89 EOF
90
91   for ((j=0; j < ${#makecd_excludes[@]} ; j++)); do
92     echo "exclude = ${makecd_excludes[$j]}" >> $next_filename
93   done
94    
95    chmod 600 $next_filename
96 }
97