93 lines
2.5 KiB
Bash
Executable File
93 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if [ ! -z "$1" ]
|
|
then
|
|
DCF=$1
|
|
else
|
|
/bin/echo "Syntax incorrect! Usage: dar2-restore dcf"
|
|
exit 0
|
|
fi
|
|
|
|
STATUS=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF status)
|
|
if [ "$STATUS" != 'enabled' ]
|
|
then
|
|
exit 1
|
|
fi
|
|
|
|
STIME=$(/bin/date)
|
|
DAR="/usr/bin/dar"
|
|
|
|
# Backup variables
|
|
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)
|
|
TARGET=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF Target)
|
|
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)
|
|
VFSTYPE=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop $DCF VFSType)
|
|
|
|
# Restore variables
|
|
DATE=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop Restore.$DCF Date)
|
|
DR=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop Restore.$DCF DR)
|
|
RESTORETO=$(/sbin/e-smith/db /home/e-smith/db/dar2 getprop Restore.$DCF RestoreTo)
|
|
|
|
/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-restore $DCF ; /bin/mv /etc/dar2/dar2-restore /etc/dar2/$DCF || exit 6
|
|
|
|
# check backup dir
|
|
if [ ! -d $MOUNT/$ID/$DCF ]
|
|
then
|
|
/bin/echo "Error locating /$ID/$DCF dir"
|
|
exit 7
|
|
fi
|
|
|
|
# execute pre-restore event
|
|
if [ "$DR" == "Enabled" ]
|
|
then
|
|
/bin/echo "Executing pre-restore event"
|
|
/sbin/e-smith/signal-event pre-restore || exit 8
|
|
fi
|
|
|
|
# perform dar restore
|
|
/bin/echo "Performing $DCF restore"
|
|
$DAR -x $MOUNT/$ID/$DCF/$DATE -B /etc/dar2/$DCF || exit 9
|
|
|
|
# dismount
|
|
/bin/echo "Dismounting $MOUNT"
|
|
/bin/umount -l $MOUNT &
|
|
|
|
FTIME=$(/bin/date)
|
|
|
|
/bin/echo "$STIME - restore started"
|
|
/bin/echo "$FTIME - restore finished"
|
|
|
|
if [ "$DR" == "Enabled" ]
|
|
then
|
|
/bin/echo "To finish your disaster recovery restore, please run:"
|
|
/bin/echo ""
|
|
/bin/echo "signal-event post-upgrade ; signal-event reboot"
|
|
fi
|