362fddcb337dd3574d75a686108940b45d153456
[infrastructure.git] / scripts / dump-db-svn.sh
1 #!/bin/bash
2
3 # we're getting called by cron, so just in case
4 PATH=/bin:/usr/bin:$PATH
5
6 COMMAND=$(basename $0)
7 COMMANDDIR=$(dirname $0)
8 COMMANDDIR=$(cd $COMMANDDIR; pwd -P)
9 DATADIR=/backups
10 DATE=$(date +%y-%m-%d-%H-%M-%S)
11
12 LOGDIR=$DATADIR/aa-dumplog
13 LOG=$LOGDIR/${DATE}.log
14 LATESTLOG=latest.log
15
16 REVISION="$Revision$"
17
18 source $COMMANDDIR/functions.sh
19
20 ###
21
22 case $(hostname) in
23   *build*|*kruder*|*blitz*)
24     DEFAULTS="subversion" ;;
25   *plc*|*private*)
26     DEFAULTS="planetlab4" ;;
27   *)
28     echo "$COMMAND: WARNING: no known defaults for hostname $(hostname)"
29     DEFAULTS=""
30     ;;
31 esac
32
33 DB_KEEPTIME=14
34 DB_USER=pgsqluser
35
36 SUBVERSION_KEEPTIME=7
37 SUBVERSION_REPO=/svn
38
39 function usage () {
40     echo "This is $COMMAND, $REVISION"
41     echo "Usage: $COMMAND [subversion]"
42     echo -e "\tkeyword 'subversion' : $SUBVERSION_REPO/ is dumped"
43 #    echo -e "\tkeyword 'apache' : $APACHE_ROOT/ is tared"
44 #    echo -e "\tkeyword 'env' : $ENV_ROOT/ is tared"
45 #    echo -e "\totherwise performs a dump of the given database"
46     echo -e "default arguments are $DEFAULTS"
47     exit 1
48 }
49
50 function dumpdb () {
51     database=$1; shift
52     output=$DATADIR/$database-$DATE.sql
53     latest=$database-latest.sql
54     echo "Dumping $database into $output (drop-mode)"
55     pg_dump --user=$DB_USER $database > $output
56     manage_link $output $latest
57 }
58
59 function dumpsubversion () {
60     output=$DATADIR/subversion-$DATE.svndump
61     latest=subversion-latest.svndump
62     echo "Creating subversion archive in $output"
63     svnadmin dump $SUBVERSION_REPO/ > $output
64     manage_link $output $latest
65 }
66
67 function dumpregulardir () {
68     name=$1; shift
69     dumpdir=$1; shift
70     output=$DATADIR/$name-$DATE.tar
71     latest=$name-latest.tar
72     echo "Creating tar archive of $dumpdir into $output"
73     tar cf $output $dumpdir
74     manage_link $output $latest
75 }
76
77 function main () {
78
79     # give one or more target names on the command-line
80     args=""
81     if [[ -z "$@" ]] ; then
82         args="$DEFAULTS"
83     else
84         args="$@"
85     fi
86
87     [ -n "$DEBUG" ] && set -x
88     
89     for arg in $args; do
90         case "$arg" in
91             -*)
92                 usage ;;
93             subversion)
94                 dumpsubversion 
95                 clean $DATADIR $SUBVERSION_KEEPTIME -name "$arg\*"
96                 ;;
97 #           apache)
98 #               dumpregulardir $arg $APACHE_ROOT
99 #               clean $DATADIR $APACHE_KEEPTIME -name "$arg\*"
100 #               ;;
101 #           env)
102 #               dumpregulardir $arg $ENV_ROOT
103 #               clean $DATADIR $ENV_KEEPTIME -name "$arg\*"
104 #               ;;
105             *)
106                 dumpdb $arg 
107                 clean $DATADIR $DB_KEEPTIME -name "$arg\*"
108                 ;;
109             esac
110     done
111
112     clean $LOGDIR 14 
113
114     manage_link $LOG $LATESTLOG
115 }
116
117 ##############################
118 # create log area 
119 mkdir -p $LOGDIR
120 chmod g+w $LOGDIR
121
122 for i in "$@" ; do
123   case "$i" in
124     -*)
125       usage ;;
126   esac
127 done
128
129 main "$@" > $LOG 2>&1