Listing 1 snapbackup.sh script
#!/bin/sh
#
# Backup of CVS repositories using snapshots
#
MKSNAP_FFS=/sbin/mksnap_ffs
MDCONFIG=/sbin/mdconfig
MDNUM=4
MOUNT=/sbin/mount
UMOUNT=/sbin/umount
RM=/bin/rm
RSYNC=/usr/local/bin/rsync
FS=/r1
SF=${FS}/snapshot/backup.snap
MP=/backup
RHOST=10.0.0.2
RMOD=r1
LOGGER=/usr/bin/logger
FACILITY=local2.info
DEBUG=0
PIDFILE=/var/run/`basename $0`.pid
# logging via syslog
log()
{
LOGMSG=$1
if [ -n "${LOGMSG}" ]; then
${LOGGER} -p ${FACILITY} -t "$0" "${LOGMSG}"
fi
}
#
# main body
#
# check if already running
if [ -f $PIDFILE ]; then
log "`basename $0` is already running. Exit."
exit 1
else
touch $PIDFILE
fi
# parse the arguments
case $1 in
-[dD]) DEBUG=1;;
esac
log "Starting snapshot backup. `date`"
if [ -x ${MKSNAP_FFS} ]; then
if [ ${DEBUG} -gt 0 ]; then
log "${MKSNAP_FFS} ${FS} ${SF}"
fi
${MKSNAP_FFS} ${FS} ${SF}
if [ -x ${MDCONFIG} ]; then
if [ ${DEBUG} -gt 0 ]; then
log "${MDCONFIG} -a -t vnode -f ${SF} -u ${MDNUM}"
fi
${MDCONFIG} -a -t vnode -f ${SF} -u ${MDNUM}
if [ -x ${MOUNT} ]; then
if [ ${DEBUG} -gt 0 ]; then
log "${MOUNT} -r /dev/md${MDNUM} ${MP}"
fi
${MOUNT} -r /dev/md${MDNUM} ${MP}
log "Starting rsync. `date`"
${RSYNC} -a --delete --force ${MP} ${RHOST}::${RMOD}/
if [ -x ${UMOUNT} ]; then
if [ ${DEBUG} -gt 0 ]; then
log "${UMOUNT} ${MP}"
fi
${UMOUNT} ${MP}
fi
fi
if [ ${DEBUG} -gt 0 ]; then
log "${MDCONFIG} -d -u ${MDNUM}"
fi
${MDCONFIG} -d -u ${MDNUM}
fi
${RM} -f ${SF} ${PIDFILE}
log "Snapshot backup complete. `date`"
fi
|