Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Scriptje voor het maken van een backup / image op een externe netwerkschijf  (gelezen 1454 keer)

Offline nouwsfam

  • Lid
Hallo andere nerds,

Misschien hebben jullie wat aan het scriptje wat nu volgt. Het doel is een image te maken van een share of map op een externe netwerkschijf. Hiervoor heb ik de LaCie NetworkSpace2 aangeschaft (1TB). De server is uiteraard Ubuntu. De clients zijn window boxes. Met het scriptje maak ik een image van een deel van de server op de netwerkschijf.

Een interessante feature van de LaCie schijf is de "deep sleep mode". Die is met een tijdsklok in te stellen. Met de wake on lan functie kan je de schijf weer opstarten. Deze functie heb ik in het scriptje geintegreerd: etherwake. Waar ik nog niet achter ben, en wat jullie misschien weten, is hoe ik de netwerkschijf mbv een unix progje in de slaapstand zet. Suggesties welkom! Het scriptje draait iedere nacht (cron).

Alle tips voor verbeteringen (ik ben maar een amateur) welkom!

#!/bin/bash
#
# /etc/imagescript
#
# Wakeup external NetDrive using etherwake
# Mount Share
# update image of backupdir using rsyn
# Umount Share
#
#######################################

PATH=/usr/local/bin:/usr/bin:/bin
HOST="networkspace2"
TOTALTIME=0
SLEEPTIME=10
WAITTIME=120
EXTRASLEEPTIME=60
SOURCEDIR="/home/sourcedir"
DESTINATIONDIR="/home/mountdir"
WAKEUPMAC="00:d0:4b:8a:9c:46"
SHARE="//networkspace2/OpenShare"
MOUNT="/home/mountdir"

echo
echo "Starting rsync script backing up $SOURCEDIR to NetDrive $DESTINATIONDIR"
echo `date`
echo "Checking if host $HOST is up!"
if ping -c1 -W1 $HOST > /dev/null; then
echo "Host $HOST already UP!"
else
echo "Waiting for $HOST to wake up ..."
etherwake $WAKEUPMAC

while ! ping -c1 -W1 $HOST > /dev/null; do
sleep $SLEEPTIME
let TOTALTIME+=$SLEEPTIME
echo $SLEEPTIME $TOTALTIME $WAITTIME
if [ $TOTALTIME -gt $WAITTIME ]; then
echo "Wakeup failed"
echo "Script aborted"
exit 1
fi
done
echo "Wakeup succeeded after $TOTALTIME seconds"
echo "Waiting extra $EXTRASLEEPTIME seconds for NetDrive to get ready ..."
sleep $EXTRASLEEPTIME
fi

mount | grep "on $MOUNT type" > /dev/null
if [ $? -eq 0 ]; then
echo "$MOUNT is already mounted"
else
echo "$MOUNT is not mounted"
echo "Mounting $MOUNT ..."
smbmount $SHARE $MOUNT -o credentials=/etc/.credentials
mount | grep "on $MOUNT type" > /dev/null
if [ $? -ne 0 ]; then
echo "Mounting $MOUNT failed"
echo "Script aborted"
exit 1
fi
fi
echo "rsync from $SOURCEDIR to $DESTINATIONDIR ..."
rsync -az --delete --force $SOURCEDIR $DESTINATIONDIR
if [ $? -eq 0 ]; then
echo "Rsync done"
else
echo "Errors executing rsync"
fi
echo "Unmounting $MOUNT ..."
smbumount $MOUNT
echo "Unmounting done"
echo "Script ends"
echo `date`
exit 0