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