#!/bin/sh
# Copyright by BYTEWORKER
# for more information
# contact cat@byteworker.com
set -xv
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
ARCHIVPATH=/data/archiv # Der Pfad in dem die Daten archiviert werden sollen.
PASSWORD=test # Password fuer die erzeugten rar dateien.
ERRORMAILADRESS= #error@archiv.com # E-Mail Empfaenger bei Problemen
CUSTOMNOTIFY= #true | false # Kundenmitteilung an oder aus schalten.
CUSTOMMAILADRESS= #franz@hugencamp.com # Kunden E-Mail Adresse.
CUSTOMMAILADRESSLIST= #"-c bar@example.com,help@test.de" # Liste mit Kunden, die auch eine mail erhalten.
CUSTOMERNAME= #'Franz Hugenkamp' # Kundenname
NOTIFYFILE=/tmp/notify.log # Wohin das Notify File generiert wird.
LOGFILE=/tmp/archiv.log # Wo alles geloggt wird.
############## Funktionen #########################
printline() { # Fuegt eine tolle Formatierung ein und schreibt in messages
echo -e "$LINEHEADER $LINETEXT $LINETAIL"
logger $LINETEXT
}
printline2() { # Rechnet die Dauer des Archivvorgangs aus.
ENDE=`date -u +%s`
TIME=`echo $ENDE - $START | bc`
echo -e "$LINEHEADER Dauer des Archivierungsvorgangs `date -u -r $TIME +"%H:%M:%S"` Stunden:Minuten:Sekunden. $LINETAIL"
}
notify() { # Die Notify E-Mail an den Kunden.
if test $CUSTOMNOTIFY = true # Erstellt aus den Saetzen, die in eine Datei
then # geschrieben werden.
touch $NOTIFYFILE
echo -e "\n\nHallo $CUSTOMERNAME!\n" >> $NOTIFYFILE
echo -e "Alle Aufgaben erfolgreich beendet am `date`." >> $NOTIFYFILE
echo -e "Dauer des Archivierungsvorgangs `date -u -r $TIME +"%H:%M:%S"` Stunden:Minuten:Sekunden." >> $NOTIFYFILE
echo -e "\n\nMit freundlichen Gruessen, Ihr Archivierungs Daemon... ;)" >> $NOTIFYFILE
mail -s "BACKUP MESSAGE! `uname -n`" $CUSTOMMAILADRESSLIST -b $ERRORMAILADRESS $CUSTOMMAILADRESS < $NOTIFYFILE
sleep 2
rm -f $NOTIFYFILE
fi
}
#####################################################
if test ! -d $ARCHIVPATH
then
LINETEXT="Das Verzeichnis $ACHIVPATH existiert nicht." # Prueft ob das Archivverzeichnis existiert.
printline
LINETEXT="Bitte ueberpruefen Sie den Archiv Pfad."
printline
mail -s "ARCHIV WARNING! `uname -n`" $ERRORMAILADRESS < $LOGFILE # Sendet eine Error Mail.
exit 1
fi
START=`date -u +%s` # Festhalten des Startzeitpunktes.
cd $ARCHIVPATH # In das Archiv Verzeichnis wechseln.
for i in *
do
test -d "$i"
if [ $? != 0 ] # Schleife fuer die Verzeichnisse, die komprimiert werden.
then
echo "$i ist eine Datei und kein Verzeichnis."
echo "Es geht weiter!"
else
echo "Das Verzeichnis $i wird archiviert."
rar a -p$PASSWORD -m5 -idq -- "$i.rar" "$i" # Der Packbefehl.
if [ $? != 0 ]a # Ein Test ob das Packen erfolgreich war.
then
LINETEXT="Das Verzeichnis $i konnte nicht archiviert werden!"
printline
mail -s "ARCHIV WARNING! `uname -n`" $ERRORMAILADRESS < $LOGFILE
exit 1
else
echo "Es wird $i geloescht"
#rm -rf "$i" # Das Verzeichnis wird geloescht.
fi
fi
done
LINETEXT="Archivierung erfolgreich abgeschlossen."
printline
printline2
notify
2>&1 >> $LOGFILE