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.

<br />
#!/bin/bash<br />
cd /home/foobar<br />
SERVER=192.168.1.2<br />
SCRIPTNAME=`basename $0`<br />
last=0<br />
if [ -f .laptopbackup ]<br />
then<br />
    last=`cat .laptopbackup`<br />
fi<br />
curr=`date '+%s'`</p>
<p>diff=$(($curr-$last))<br />
echo diff: $diff<br />
if [ $diff -gt 604800 ]; then<br />
    IP=$(/sbin/ip route | awk '/default/ { print $3 }')<br />
    IF=$(/sbin/ip route | awk '/default/ { print $5 }')<br />
    if [ $IP=&quot;192.168.1.1&quot; ] &amp;&amp; [ $IF=&quot;eth0&quot; ]; then</p>
<p>	ping -q -c 1 $SERVER<br />
	if [ $? -eq  0 ]<br />
	then<br />
	    /usr/bin/notify-send $SCRIPTNAME &quot;Starting backup to $SERVER&quot; --icon=dialog-information<br />
	    /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/ &gt; .laptopbackup.log<br />
	    if [ $? -eq  0 ]<br />
	    then<br />
		/usr/bin/notify-send $SCRIPTNAME &quot;Backup to $SERVER finished&quot; --icon=dialog-information<br />
		echo &quot;$curr&quot; &amp;&gt; .laptopbackup<br />
	    else<br />
		/usr/bin/notify-send $SCRIPTNAME &quot;Backup to $SERVER failed&quot; --icon=dialog-information<br />
		mail -s &quot;laptopbackup: Error&quot; skrodzki@stevekist.de &lt; .laptopbackup.log<br />
	    fi<br />
	else<br />
	    /usr/bin/notify-send $SCRIPTNAME &quot;Server $SERVER not reachable&quot; --icon=dialog-information<br />
	fi<br />
    fi<br />
fi</p>
<p>