#!/bin/bash # # Backup script for breakout tools # todo: backup typo databases # BACKUP_HOST=newbsd.assembla.com BASE_DIR=/opt/beta SVN_DIR=$BASE_DIR/svn TRAC_DIR=$BASE_DIR/trac TMP_SVN_DIR=$BASE_DIR/tmp_backup/svn-`date '+%F'` SEND_DIR=$BASE_DIR/to_send RSA_KEY=/var/backups/.ssh/id_rsa #hotbackup svn repositories hotbackup_svn() { cd $SVN_DIR for i in *; do [ -d "$i" ] || continue backup_svn $i done } backup_svn() { local REVFILE="$1/backup_rev.txt" local OLDREV=`cat "$REVFILE" 2>/dev/null || echo -n 0` local NEWREV=`svnlook youngest $1` echo Repository: $1 if [ $OLDREV != $NEWREV ] then local OUTPUT_FILE="$TMP_SVN_DIR/$1-$OLDREV-$NEWREV.dump" OLDREV=$(($OLDREV+1)) echo " $OLDREV:$NEWREV" svnadmin dump -q -r $OLDREV:$NEWREV --incremental $1 > "$OUTPUT_FILE" echo -n $NEWREV > "$REVFILE" fi } hotbackup_trac() { cd $TRAC_DIR mkdir "$TMP_SVN_DIR/trac_sql" || exit 1 for i in *; do [ -f "$i/db/trac.db" ] || continue sqlite "$i/db/trac.db" .dump > "$TMP_SVN_DIR/trac_sql/$i.sql" done } backup_typo() { local outdir=$TMP_SVN_DIR/typo_sql [ ! -e $outdir ] && mkdir $outdir || exit 1 echo "Typo databases" for db in `echo show databases | mysql | grep typo_`; do echo " $db" mysqldump -c -l $db >$outdir/$db.sql done } rsync_trac_data() { /usr/bin/rsync -avz -e "ssh -i $RSA_KEY" $TRAC_DIR/ backup@$BACKUP_HOST:/home/backup/tools/trac } /bin/rm -rf $SEND_DIR/* # uncomment for full svn repository backup #/bin/rm -rf $SVN_DIR/*/backup_rev.txt mkdir -m 700 $TMP_SVN_DIR hotbackup_trac #hotbackup_svn backup_typo echo "Sync trac projects..." rsync_trac_data mysqldump -c -l mephisto_production >$TMP_SVN_DIR/mephisto.sql cp -r $TMP_SVN_DIR/ $SEND_DIR/