lucene/src/scripts/abo

133 lines
2.5 KiB
Plaintext
Raw Normal View History

#!/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 "<optimize/>"`
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