b6dec6d9eab170f3835f303223fabbcbac17cfd3
[feisty_meow.git] / scripts / archival / serene_backer_upper.sh
1 #!/bin/bash
2
3 # backs up crucial directories on my server into the allotted backup area.
4 #
5 # Author: Chris Koeritz
6
7 # tests whether the last action worked or not, and if not, it issues the
8 # complaint passed as the arguments.
9 function check_if_failed()
10 {
11   if [ $? -ne 0 ]; then
12     echo "Step FAILed: $*"
13     return 1
14   fi
15 }
16
17 # uses the failure checking function, but actually exits out of the script
18 # if there was a failure detected.
19 function exit_if_failed()
20 {
21   check_if_failed $*
22   if [ $? -ne 0 ]; then
23     exit 1
24   fi
25 }
26
27 # given a source and target folder, this synchronizes the source into the target.
28 function synch_to_backup()
29 {
30   local source="$1"; shift
31   local dest="$1"; shift
32   if [ -z "$source" -o -z "$dest" ]; then
33     echo synch_to_backup function requires a source and a target folder to synch.
34     exit 1
35   fi
36   echo "Synchronizing $source into $dest."
37 ####hmmm: temporary measure until top-level dir bug fixed in synch_files app.
38 ###  if [ ! -d "$dest" ]; then
39 ###    mkdir -p "$dest"
40 ###    if [ $? -ne 0 ]; then
41 ###      echo "FAILed to make target directory: $dest"
42 ###      return 1
43 ###    fi
44 ###  fi
45   synch_files "$source" "$dest"
46   check_if_failed "synching $source to $dest"
47 }
48
49 ##############
50
51 # main body of script...
52
53 # just undo it first, to try to be sure we know we are mounted properly later.
54 #NO LONGER USING MOUNT: umount /z/backup &>/dev/null
55
56 # now saddle up the backup.
57 #NO LONGER USING MOUNT: mount /z/backup/
58 #NO LONGER USING MOUNT: exit_if_failed "mounting backup folder"
59
60 # we should always be synching to an existing set in there.  make sure they exist.
61 # for the first ever backup, this is not a good check...
62 #test -d /z/backup/etc -a -d /z/backup/home
63 #exit_if_failed "testing presence of prior backup"
64
65 ##############
66
67 synch_to_backup /etc /z/backup/etc/
68
69 ##############
70
71 for subdir in fred/Maildir git sharedspam svn trac www-data ; do 
72   synch_to_backup /home/$subdir /z/backup/home/$subdir
73 done
74
75 ##############
76
77 synch_to_backup /var/lib/mailman /z/backup/var/lib/mailman
78 synch_to_backup /var/lib/mysql /z/backup/var/lib/mysql
79
80 ##############
81
82 #NO LONGER USING MOUNT: umount /z/backup/
83 #NO LONGER USING MOUNT: exit_if_failed "unmounting backup folder"
84
85