laptopbackup

Uiuiui, am 31.3. war  Worldbackupday, da bin ich doch schon wieder 2 Tage zu spät mit meinem script…  aber immerhin, endlich bin ich mal soweit.

Was machts? naja, im Prinzip ists nur ein wrapper um einen rsync Einzeiler. Er schaut nach, ob der letzte Backup länger als 604800 (7 Tage) zurückliegt, ob der Rechner im ethernet ist und der server gepingt werden kann.  Wenn das alles zutrifft, wird rsync gestartet und ab gehts.  Ein wenig notifications und mail, wenns nicht klappt. Fertig ist die Laube.

Klar, das script muss per crontab nach Geschmack wiederholt werden. Ich mach das alle 10 minuten, aber das ist Geschmacksache. Hier nun das Script. Macht draus, was ihr wollt 🙂

Achja: der Trick, dass das überhaupt aus dem cron geht, ist, ein ssh-key ohne passwort zu verwenden und den auf der anderen Seite zu den authorized keys zu tun, aber das wisst ihr ja sicher.

#!/bin/bash
cd /home/foobar
SERVER=192.168.1.2
SCRIPTNAME=`basename $0`
last=0
if [ -f .laptopbackup ]
then
    last=`cat .laptopbackup`
fi
curr=`date '+%s'`

diff=$(($curr-$last))
echo diff: $diff
if [ $diff -gt 604800 ]; then 
    IP=$(/sbin/ip route | awk '/default/ { print $3 }')
    IF=$(/sbin/ip route | awk '/default/ { print $5 }')
    if [ $IP="192.168.1.1" ] && [ $IF="eth0" ]; then

	ping -q -c 1 $SERVER
	if [ $? -eq  0 ]
	then
	    /usr/bin/notify-send $SCRIPTNAME "Starting backup to $SERVER" --icon=dialog-information
	    /usr/bin/rsync -e '/usr/bin/ssh -i /home/foobar/.ssh/foobar_home' -av --delete --exclude-from=stevebackup.exclude . foobar@192.168.1.2:laptopbackup/ > .laptopbackup.log
	    if [ $? -eq  0 ]
	    then
		/usr/bin/notify-send $SCRIPTNAME "Backup to $SERVER finished" --icon=dialog-information
		echo "$curr" &> .laptopbackup
	    else
		/usr/bin/notify-send $SCRIPTNAME "Backup to $SERVER failed" --icon=dialog-information
		mail -s "laptopbackup: Error" skrodzki@stevekist.de < .laptopbackup.log
	    fi
	else
	    /usr/bin/notify-send $SCRIPTNAME "Server $SERVER not reachable" --icon=dialog-information  
	fi
    fi
fi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.