884a10090e92324e1add977b394ac5860988cbea
[dump.git] / examples / cron_dump_to_disk / backup
1 #!/bin/bash
2 #
3 # This script will make a simple backup of the most critical partitions,
4 # using the "dump" facility, into the backup partition. It will stop the
5 # webserver, and recurse the sites directories making a tar mini-backup of
6 # the database dirs. It will the restart the webserver, and start the
7 # "dump" backup.
8 #
9
10 if [ "$2" = "nodumpdate" ]; then
11 UPDATEDDATE=""
12 else
13 UPDATEDDATE="-u"
14 fi
15
16 if [ "$1" = "full" ]; then
17 DLEVEL="0"
18 BTYPE="full"
19 BACKUP="Full"
20 elif [ "$1" = "inc" ]; then
21 DLEVEL="1"
22 BTYPE="inc"
23 BACKUP="Incremental"
24 else
25 echo "Usage: $0 full|inc [nodumpdate]"
26 exit 1
27 fi
28
29
30 #
31 # Configuration Parameters
32 #
33
34 BACKUPPART=${BACKUPPART:-"/backup"}
35 BACKUPDIR=${BACKUPDIR:-"current"}
36 DUMPLOGARCH="$BACKUPPART/backup.dump.log.gz"
37 FSTODUMP=${FSTODUMP:-/ /var /home /mnt/hdb1 /usr}
38 DUMPFILESMODE="0644"
39 DUMPFILESOWN="root.root"
40
41 #
42 # Start
43 #
44
45 echo
46 echo "#####################################################################"
47 echo "Starting ${BACKUP} backup."
48 echo "#####################################################################"
49 echo
50
51
52 #
53 # Make system backup
54 #
55
56 echo "### ${BACKUP} System Dump Backup ###"
57 echo "Using backup partition: $BACKUPPART"
58 echo "Filesystems to dump: $FSTODUMP"
59
60 echo -n "Remounting backup partition read-write ... "
61 if ( mount $BACKUPPART -o remount,rw &> /dev/null ) then
62 echo "done."
63 elif ( mount $BACKUPPART -o rw &> /dev/null ) then
64 echo "done."
65 else
66 echo "failure!"
67 echo " There were problems remounting $BACKUPPART in read-write mode!"
68 echo "Aborting ${BACKUP} System Dump Backup."
69 echo "Aborted."
70 echo "-------------------------------------------------------------------------------"
71 exit 1
72 fi
73
74 echo -n "Checking backup partition for correct dir structure ... "
75 if [ -d $BACKUPPART/$BACKUPDIR -a -w $BACKUPPART/$BACKUPDIR ]; then
76 echo "done."
77
78 echo -n "Checking backup partition for available space ... "
79 SREQ=`for i in $FSTODUMP; do dump -$DLEVEL -S $i 2> /dev/null; done | awk '{x=x+$1/1048576} END {printf "%6.0f\n", x}'`
80 SAVAILFREE=`df --block-size=1048576 | grep -Fe $BACKUPPART | awk '{printf "%6.0f\n", $4}'`
81 SAVAILDEL=`du -s --block-size=1048576 $BACKUPPART/$BACKUPDIR/. | awk '{printf "%6.0f\n", $1}'`
82 SAVAIL=`expr $SAVAILFREE + $SAVAILDEL`
83
84 if [ `expr $SAVAIL - $SREQ` -gt "0" ]; then
85 echo "done."
86 echo "Available: $SAVAIL MB Required: $SREQ MB."
87 else
88 echo "not enough space!"
89 echo "There is not enough space left in $BACKUPPART for the backup!"
90 echo "Available: $SAVAIL MB Required: $SREQ MB."
91 echo -n "Remounting backup partition read-only ... "
92 if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
93 echo "done."
94 elif ( mount $BACKUPPART -o ro &> /dev/null ) then
95 echo "done."
96 else
97 echo "failure!"
98 echo "There were problems remounting $BACKUPPART in read-only mode!"
99 echo "Aborting ${BACKUP} System Dump Backup."
100 echo "Aborted."
101 echo "-------------------------------------------------------------------------------"
102 exit 1
103 fi
104 echo "Aborting ${BACKUP} System Dump Backup."
105 echo "Aborted."
106 echo "-------------------------------------------------------------------------------"
107 exit 1
108 fi
109
110 echo -n "Deleting old files ... "
111 if [ `ls -la $BACKUPPART/$BACKUPDIR/ | wc -l` -gt "3" ]; then
112 rm -f $BACKUPPART/$BACKUPDIR/* &> /dev/null
113 echo "done."
114 else
115 echo "no old files to delete."
116 fi
117
118 echo "Dumping filesystems ... "
119 for FS in $FSTODUMP
120 do
121 if [ "$FS" = "/" ]; then
122 FSNAME="root"
123 else
124 FSNAME=`echo $FS | tr / _ | cut -b 2-`
125 fi
126 sync
127 echo -n "Starting dump of $FSNAME ( $FS ) ... "
128 if ( dump -$DLEVEL $UPDATEDDATE -z -M -s 27306 -f $BACKUPPART/$BACKUPDIR/$FSNAME.$BTYPE. $FS &> $BACKUPPART/$BACKUPDIR/$FSNAME.log ) then
129 echo "done."
130 else
131 echo "problems!"
132 echo "There were problems with the dump of $FSNAME ( $FS )."
133 echo "Check log file at $BACKUPPART/$BACKUPDIR/$FSNAME.log.gz"
134 echo "Also check log archive file $DUMPLOGARCH."
135 fi
136 cat $BACKUPPART/$BACKUPDIR/$FSNAME.log |gzip >> $DUMPLOGARCH
137 echo "-------------------------------------------------------------------------------" |gzip >> $DUMPLOGARCH
138 done
139
140 echo -n "Setting ownership and permissions of dump files ... "
141 chmod $DUMPFILESMODE $BACKUPPART/$BACKUPDIR/* $DUMPLOGARCH &> /dev/null
142 chown $DUMPFILESOWN $BACKUPPART/$BACKUPDIR/* $DUMPLOGARCH &> /dev/null
143 echo "done."
144
145 echo -n "Compressing dump log files ... "
146 gzip $BACKUPPART/$BACKUPDIR/*.log &> /dev/null
147 echo "done."
148 sync
149
150 else
151 echo "problems!"
152 echo "There are problems with the directory structure."
153 echo "Check directory: $BACKUPPART/$BACKUPDIR"
154 echo -n "Remounting backup partition read-only ... "
155 if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
156 echo "done."
157 else
158 echo "failure!"
159 echo "There were problems remounting $BACKUPPART in read-only mode!"
160 echo "Aborting ${BACKUP} System Dump Backup."
161 echo "Aborted."
162 echo "-------------------------------------------------------------------------------"
163 exit 1
164 fi
165 echo "Aborting ${BACKUP} System Dump Backup."
166 echo "Aborted."
167 echo "-------------------------------------------------------------------------------"
168 exit 1
169 fi
170
171 echo -n "Remounting backup partition read-only ... "
172 if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
173 echo "done."
174 else
175 echo "failure!"
176 echo "There were problems remounting $BACKUPPART in read-only mode!"
177 echo "Aborting ${BACKUP} System Dump Backup."
178 echo "Aborted."
179 echo "-------------------------------------------------------------------------------"
180 exit 1
181 fi
182
183 echo "### End of ${BACKUP} System Dump Backup ###"
184 echo "Done."
185 echo "-------------------------------------------------------------------------------"