#!/bin/sh
# Author:   Thien Ho <thien@bibliofiche.com>
# Created:  Tue, Feb 21, 2006 @ 13:48:34 EST
# Updated:
# - Wed, Mar 15, 2006 @ 10:25:10 EST
#   + Added function to backup source

function showHelp() {
    cat << _MSG_
Usage: `basename $0` OPTIONS
Options:
    -r DIR
        source root (/www/ by default).
    -b BRANCH1[,BRANCH2[,BRANCH3[,...]]]
        source branches (opals by default), separated by commas.
    -v
        echo files being backed up
    -h
        display this help and exit
_MSG_
}

fullbackup=no
verbose=''
sourceRoot=''
sourceBranch=''
while getopts "b:fhr:v" option; do
    case $option in
    b)  sourceBranch=$OPTARG
        ;;
    f)  fullbackup=yes
        ;;
    h)  showHelp
        exit 1
        ;;
    r)  sourceRoot=$OPTARG
        ;;
    v)  verbose=yes
        ;;
    *)  
        ;;
    esac
done

[ "$verbose" == "yes" ] || verbose=no
[ "$sourceRoot" == "" ] && sourceRoot=/www
[ "$sourceBranch" == "" ] && sourceBranch=opals
if [ ! -d $sourceRoot ]; then
    echo "ERROR: no such directory '$sourceRoot'."
    exit 3
else
    for i in `echo $sourceBranch | tr '[,]' '[ ]'`; do
        if [ ! -d $sourceRoot/$i ]; then
            echo "ERROR: no such directory '$sourceRoot/$i'."
            exit 4
        fi
    done
fi

ZPORT=210

# Source common functions
. /etc/opals/function

isDatabaseModified
if [ $? -eq 1 ]; then
    echo Database is modifying. Skip backing up MySQL and Zebra data.
#    echo Database is modified. Creating hot backup...
else
    /sbin/service httpd stop

    fixIndex $ZINDEX_TBZ

    ############################################################
    # Backup MySQL, Zebra
    backupMysql $verbose
    backupZebra $verbose

    /sbin/service httpd start
fi
#while [ $? -eq 1 ]; do
#    echo Database is modifying. Waiting for 1 minutes...
#    sleep 60
#    isDatabaseModified
#done


############################################################
# Backup OPALS source
backupSource $verbose $sourceRoot $sourceBranch


exit
