Thursday, January 19, 2006

Excellent Script to Backup MAC to a *Nix Machine

: "
#!/bin/sh

REMOTEHOST=host.to.backup.to
REMOTEPATH=/home/$USER/backup/directory

BASEDIR=`dirname $0`
cd $BASEDIR
LOGDIR=$BASEDIR/logs
LOGFILE=`basename $0`
/sbin/ping -t2 -rq $REMOTEHOST >& /dev/null
if [ $? -eq 0 ] ; then
LOADAVG=`ssh $REMOTEHOST uptime | sed 's/.*average: ([0-9]).*/1/g'`
if [ $LOADAVG -eq 0 ] ; then
test -d $LOGDIR || mkdir $LOGDIR
if [ -f EXCLUDES.$USER ] ; then
rm -f $LOGDIR/$LOGFILE.3
test -f $LOGDIR/$LOGFILE.2 && mv $LOGDIR/$LOGFILE.2 $LOGDIR/$LOGFILE.3
test -f $LOGDIR/$LOGFILE.1 && mv $LOGDIR/$LOGFILE.1 $LOGDIR/$LOGFILE.2
test -f $LOGDIR/$LOGFILE && mv $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
logger -i -p daemon.notice -t $LOGFILE 'Starting backup to '$REMOTEHOST''
rsync -e ssh -axv --exclude-from EXCLUDES.$USER --bwlimit=100 --delete
--delete-excluded --stats $HOME/ $REMOTEHOST:$REMOTEPATH > $LOGDIR/$LOGFILE 2>&1
tail -2 $LOGDIR/$LOGFILE | logger -i -p daemon.info -t $LOGFILE
else
echo No $BASEDIR/EXCLUDES.$USER
fi
else
logger -i -p daemon.notice -t $LOGFILE 'Load average on $REMOTEHOST is $LOADAVG - aborting'
fi
else
logger -i -p daemon.notice -t $LOGFILE 'Host is not on local network - aborting'
fi"



(Via MAC OS X Hints.)

No comments: