#!/bin/bash # # $Id: abo.template,v 1.5 2005/06/09 15:33:13 billa Exp $ # $Source: /cvs/main/searching/solar-tools/abo.template,v $ # $Name: r20050725_standardized_server_enabled $ # # Shell script to make an Atomic Backup after Optimize of # a SOLAR Lucene collection. export PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH # sudo to app user if necessary if [[ $(whoami) != app ]] then sudo -u app $0 "$@" exit $? fi oldwhoami=$(who -m | cut -d' ' -f1 | sed -e's/^.*!//') if [[ "${oldwhoami}" == "" ]] then oldwhoami=`ps h -Hfp $(pgrep -g0 ${0##*/}) | tail -1|cut -f1 -d" "` fi # set up variables prog=${0##*/} log=logs/${prog}.log # define usage string USAGE="\ usage: $prog [ -v ] -v increase verbosity " unset verbose # parse args originalargs="$@" while getopts v OPTION do case $OPTION in v) verbose="v" ;; *) echo "$USAGE" exit 1 esac done shift $(( OPTIND - 1 )) start=`date +"%s"` function timeStamp { date +'%Y%m%d-%H%M%S' } function logMessage { echo $(timeStamp) $@>>$log if [[ -n ${verbose} ]] then echo $@ fi } function logExit { end=`date +"%s"` diff=`expr $end - $start` echo "$(timeStamp) $1 (elapsed time: $diff sec)">>$log exit $2 } cd ${0%/*}/../.. logMessage started by $oldwhoami logMessage command: $0 $originalargs logMessage sending optimize to Solar server at port 5051 rs=`curl http://localhost:5051/update -s -d ""` if [[ $? != 0 ]] then logMessage failed to connect to SOLAR server at port 5051 logMessage optimize failed logExit failed 1 fi # check status of optimize request rc=`echo $rs|cut -f2 -d'"'` if [[ $? != 0 ]] then logMessage optimize request to SOLAR at port 5051 failed: logMessage $rs logExit failed 2 fi # successful optimize creates a snapshot file synchronously lastsnap=`ls -drt1 snapshot.* | tail -1 ` if [[ $lastsnap == "" ]] then logMessage commit did not create snapshot at port 5051; backup failed: logExit failed 3 fi name=backup.${lastsnap##snapshot.} temp=temp-${name} if [[ -d ${name} ]] then logMessage backup directory ${name} already exists logExit aborted 1 fi if [[ -d ${temp} ]] then logMessage backingup of ${name} in progress logExit aborted 1 fi logMessage making backup ${name} # clean up after INT/TERM trap 'echo cleaning up, please wait ...;/bin/rm -rf ${name} ${temp};logExit aborted 13' INT TERM # make a backup using hard links into temporary location # then move it into place atomically cp -lr ${lastsnap} ${temp} mv ${temp} ${name} logExit ended 0