2005-12-28 21:19:29 +01:00
|
|
|
# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
|
2005-03-18 21:14:49 +01:00
|
|
|
#
|
|
|
|
# this handler will backup subversion repostitories.
|
|
|
|
#
|
|
|
|
|
|
|
|
getconf src /var/lib/svn
|
|
|
|
getconf dest /var/backups/svn
|
|
|
|
getconf tmp /var/backups/svn.tmp
|
2005-11-05 12:41:46 +01:00
|
|
|
getconf HOTBACKUP "/usr/bin/svnadmin hotcopy"
|
2005-05-24 21:27:43 +02:00
|
|
|
getconf vsname
|
2005-03-18 21:14:49 +01:00
|
|
|
|
|
|
|
error=0
|
2005-05-24 21:27:43 +02:00
|
|
|
|
|
|
|
# If vservers are configured, decide if the handler should
|
|
|
|
# use them or if it should just operate on the host
|
2005-06-13 21:37:26 +02:00
|
|
|
if [ "$vservers" = "yes" ]
|
2005-05-24 21:27:43 +02:00
|
|
|
then
|
|
|
|
if [ ! -z $vsname ]
|
|
|
|
then
|
|
|
|
info "Using vserver '$vsname'"
|
|
|
|
usevserver=1
|
|
|
|
else
|
|
|
|
info "No vserver name specified, actions will be performed on the host"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2005-08-27 02:19:50 +02:00
|
|
|
# If needed, make sure that the specified vserver exists and is running.
|
2005-05-24 21:27:43 +02:00
|
|
|
if [ $usevserver ]
|
|
|
|
then
|
2005-08-27 02:19:50 +02:00
|
|
|
info "examining vserver '$vsname'"
|
|
|
|
# does it exist ?
|
2005-05-24 21:27:43 +02:00
|
|
|
vroot="$VROOTDIR/$vsname"
|
|
|
|
[ -d $vroot ] || fatal "vserver '$vsname' does not exist at '$vroot'"
|
2005-08-27 02:19:50 +02:00
|
|
|
# is it running ?
|
|
|
|
running=`$VSERVERINFO $vsname RUNNING`
|
2005-11-29 15:18:31 +01:00
|
|
|
[ "$running" = "1" ] || fatal "vserver $vsname is not running."
|
2005-05-24 21:27:43 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
cd $vroot$src
|
2005-03-18 21:14:49 +01:00
|
|
|
for repo in `find . -name svnserve.conf`
|
|
|
|
do
|
|
|
|
repo=`dirname $repo`
|
|
|
|
repo=`dirname $repo`
|
|
|
|
|
2005-05-24 21:27:43 +02:00
|
|
|
ret=`mkdir -p $vroot$tmp/$repo 2>&1`
|
2005-03-18 21:14:49 +01:00
|
|
|
code=$?
|
|
|
|
if [ "$ret" ]; then
|
|
|
|
debug "$ret"
|
|
|
|
fi
|
|
|
|
if [ $code != 0 ]; then
|
2005-05-24 21:27:43 +02:00
|
|
|
error "command failed mkdir -p $vroot$tmp/$repo"
|
2005-03-18 21:14:49 +01:00
|
|
|
fi
|
|
|
|
|
2005-05-24 21:27:43 +02:00
|
|
|
if [ $usevserver ]
|
|
|
|
then
|
|
|
|
ret=`$VSERVER $vsname exec $HOTBACKUP $src/$repo $tmp/$repo 2>&1`
|
|
|
|
else
|
|
|
|
ret=`$HOTBACKUP $src/$repo $tmp/$repo 2>&1`
|
|
|
|
fi
|
2005-03-18 21:14:49 +01:00
|
|
|
code=$?
|
|
|
|
if [ "$ret" ]; then
|
|
|
|
debug "$ret"
|
|
|
|
fi
|
|
|
|
if [ $code != 0 ]; then
|
2005-05-24 21:27:43 +02:00
|
|
|
error "command failed -- $HOTBACKUP $vroot$src/$repo $vroot$tmp/$repo"
|
2005-03-18 21:14:49 +01:00
|
|
|
error=1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2005-03-21 18:50:49 +01:00
|
|
|
if [ $error -eq 1 ]; then
|
2005-05-24 21:27:43 +02:00
|
|
|
echo "Error: because of earlier errors, we are leaving svn backups in $vroot$tmp instead of $vroot$dest"
|
2005-03-18 21:14:49 +01:00
|
|
|
else
|
2005-05-24 21:27:43 +02:00
|
|
|
if [ -d $vroot$dest -a -d $vroot$tmp ]; then
|
|
|
|
rm -rf $vroot$dest
|
2005-03-18 21:14:49 +01:00
|
|
|
fi
|
2005-05-24 21:27:43 +02:00
|
|
|
if [ -d $vroot$tmp ]; then
|
|
|
|
mv $vroot$tmp $vroot$dest
|
2005-03-18 21:14:49 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
exit 0
|