#/bin/bash #===================================================== # anpassen: #===================================================== # SRC = Hostname und Freigabename der Quelle SRC=quellrechner::pub # DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden DSTDIR=/volume1/backup # HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden HTMLLOGDIR=/volume1/RSyncLog # PREFIX: "Vorsilbe", die den täglichen Unterverzeichnisnamen vorgehängt wird PREFIX=daily #===================================================== # automatische Variablen, keine Anpssung nötig #===================================================== # aktuelles Datum DATE=`date +%d.%m.%y` # Zielverzeichnis DST=$DSTDIR/$PREFIX-$DATE # temporäres Verzeichnis BUS=$DSTDIR/.running-$DATE # Logdateiname LOG=$DSTDIR/log/log-$DATE.log # HTML-Logdatei HTMLLOG=$HTMLLOGDIR/log-$DATE.html # gestriges Verzeichnis PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1` #===================================================== # anlegen der Ausgabeverzeichnisse #===================================================== if test ! -d $DSTDIR then mkdir $DSTDIR fi if test ! -d $DSTDIR/log then mkdir $DSTDIR/log fi #===================================================== # Kopf der Logdate erzeugen #===================================================== CURRENTTIME=`date -u` echo "================================================" > $LOG echo "Started at " $CURRENTTIME >> $LOG echo "================================================" >> $LOG echo "Fetching from " $SRC >> $LOG echo "Storing at " $DST >> $LOG echo "Hardlinking from " $PREV >> $LOG echo "================================================" >> $LOG #===================================================== # rsync aufrufen und bei Fehler neu starten # die Sicherung wird hier erstmal in ein temporäres # Verzeichnis geschrieben #===================================================== while ! \ rsync -av --link-dest=$PREV $SRC $BUS >> $LOG 2>&1 do sleep 60 done #===================================================== # Sicherungsverzechnis in endgültigen Namen umbenennen # und mit touch auf die aktuelle Uhrzeit setzen #===================================================== mv $BUS $DST touch $DST #===================================================== # Ende der Logdate erzeugen #===================================================== CURRENTTIME=`date -u` echo "================================================" >> $LOG echo "Finished at " $CURRENTTIME >> $LOG echo "================================================" >> $LOG #===================================================== # Logdate HTML umsetzen, damit man sie leichter in # einem Browser lesen kann. #===================================================== awk ' BEGIN { print "" print "" print " " print " " print " TimAchine Backup Log" print " " print " " } { print " "$0"
" } END{ print " " print "" }' $LOG > $HTMLLOG #===================================================== # originale Logdate komprimieren, um Platz zu sparen #===================================================== gzip -9 $LOG