#!/bin/sh if [ ! -z "$1" ] then DCF=$1 else /bin/echo "Syntax incorrect! Usage: dar2-backup dcf" exit 0 fi STATUS=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF status) if [ "$STATUS" != 'enabled' ] then exit 1 fi # Backup variables STIME=$(/bin/date) DAR="/usr/bin/dar" EXPIRY=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Expiry) ID=$(/sbin/e-smith/config get SystemName).$(/sbin/e-smith/config get DomainName) MOUNT=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Mount) ## /media/usbdisk or /mnt/dar2 TARGET=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Target) ## //host/share USERNAME=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Username) PASSWORD=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Password) VERBOSE=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Verbose) VFSTYPE=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF VFSType) ## man mount TODAY=$(/bin/date +%Y.%m.%d) /bin/umount $MOUNT >/dev/null 2>&1 # mount if [ "$MOUNT" == "/mnt/dar2" ] then MOUNT=$MOUNT/$DCF # create mount dir if [ ! -d $MOUNT ] then /bin/echo "Creating $MOUNT dir" /bin/mkdir -p $MOUNT || exit 2 fi /bin/echo "Connecting $MOUNT to $TARGET" /bin/mount -t $VFSTYPE -o username=$USERNAME,password=$PASSWORD $TARGET $MOUNT || exit 3 else /bin/echo "Connecting to $MOUNT" /bin/mount $MOUNT || exit 4 fi # expand job template /bin/echo "Expanding /etc/dar2/$DCF template" if [ -e "/etc/dar2/$DCF" ] then /bin/rm -f /etc/dar2/$DCF || exit 5 fi /sbin/e-smith/expand-template /etc/dar2/dar2-backup $DCF ; /bin/mv /etc/dar2/dar2-backup /etc/dar2/$DCF || exit 6 # create destination dir if [ ! -d $MOUNT/$ID/$DCF ] then /bin/echo "Creating destination /$ID/$DCF dir" /bin/mkdir -p $MOUNT/$ID/$DCF || exit 7 fi # zip and store db's /bin/echo "Creating $MOUNT/$ID/$DCF/db.zip" /usr/bin/zip -q -D $MOUNT/$ID/$DCF/db.zip /home/e-smith/db/* # expire old backups /bin/echo "Expiring old backups" if [ "$EXPIRY" == "0" ] then /bin/rm -f $MOUNT/$ID/$DCF/*.dar else /usr/bin/find $MOUNT/$ID/$DCF/*.dar -type f -mtime +$EXPIRY -exec /bin/rm -f {} \; > /dev/null 2>&1 fi # execute pre-backup event /bin/echo "Executing pre-backup event" /sbin/e-smith/signal-event pre-backup || exit 8 # state verbose if [ "$VERBOSE" == "on" ] then /bin/echo "Verbose logging is on" else /bin/echo "Verbose logging is off" fi # perform dar backup /bin/echo "Performing $DCF backup" $DAR -B /etc/dar2/$DCF -c $MOUNT/$ID/$DCF/$TODAY || exit 9 # list archives /bin/echo "" /bin/echo "Listing $DCF archives on target:" /bin/ls -l $MOUNT/$ID/$DCF/ || 10 # disk space usage /bin/echo "" /bin/echo "Total target disk space usage:" /bin/df -h $MOUNT || 11 /bin/echo "" # execute post-backup event /bin/echo "Executing post-backup event" /sbin/e-smith/signal-event post-backup || exit 12 # create log file if [ "$VERBOSE" == "on" ] then /bin/echo "Creating /var/log/dar2/$ID/$DCF/$TODAY.log" if [ ! -d /var/log/dar2/$ID/$DCF ] then /bin/mkdir -p /var/log/dar2/$ID/$DCF || exit 13 fi $DAR -l $MOUNT/$ID/$DCF/$TODAY -as > /var/log/dar2/$ID/$DCF/$TODAY.log || exit 14 fi # dismount /bin/echo "Dismounting $MOUNT" /bin/umount -l $MOUNT & FTIME=$(/bin/date) /bin/echo "" /bin/echo "$STIME - backup started" /bin/echo "$FTIME - backup finished"