#!/bin/bash
# geschrieben von Markus Rost
# Version 0.5 - in Entwicklung
# Dies ist ein automatisches Backup-Script
# in der Datei die in $paradat angegeben wird
# muss in der ersten Zeile der Ablageort der
# tar-Archive angegeben werden. Die Pfade muessen
# unbedingt mit / aufhoeren. In der zweite
# Zeile die Anzahl der Sicherung die erhalten
# bleiben sollen. In der dritten Zeile die eMail-
# Addresse des Systemadministrators und darunter
# die Pfade die gesichert werden sollen.
# Unter $countdat wird die Datei fuer den internen
# Counter abgelegt
# Pfade setzten
PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11:
# Variablen Definition:
# Ablageort und Name der Parameterdatei
paradat=./parameter.txt
# Ablageort und Name der Counterdatei
countdat=/tmp/.count
# Ablageort und Name temporaeen Datei
liste=/tmp/.liste
error=/tmp/.error
# Script-Code:
# Ueberpruefen ob eine $paradat vorhanden ist wenn
# nicht wird eine Mail abgesetzt und das Script beendet
if [ ! -s $paradat ] ; then
t1="Sie haben keine Parameterdatei angegeben."
t2="Deshalb konnte das Script nicht ausgeführt werden."
t3="Bitte geben Sie ein Parameterdatei an!"
echo $t1 $t2 $t3 | mail -s "Ihr Backup Script" $mail
exit 1
fi
# Ueberpruefen ob eine $countdat vorhanden ist
# wenn nicht eine anlegen und 1 reinschreiben
if [ ! -r $countdat ] ; then
echo 1 > $countdat
fi
# einlesen des Inhalts von $countdat in $count
count=`more $countdat`
# einlesen des Inhalts von $paradat
# Inhalt wird in $i ausgeben
n=0
for i in $(cut -d: -f1 $paradat); do
n=$(( $n + 1 ))
# Auslesen der ersten Zeile und verschieben in $ziel
if [ $n == 1 ] ; then
ziel=$i
# Ueberpruefen ob Zielverzeichnis vorhanden ist
# wenn nicht wird das Verzeichnis angelegt
if [ ! -d $ziel ] ; then
mkdir $ziel
fi
fi
# Auslesen der zweiten Zeile und verschieben in $anzahl
if [ $n == 2 ] ; then
anzahl=$i
fi
# Auslesen der dritten Zeile und verschieben in $mail
if [ $n == 3 ] ; then
mail=$i
fi
# Auslesen der sonstigen Zeilen und verschieben in $para
if [ $n -ge 4 ] ; then
para=$i
cd $ziel
# Ueberpruefen ob jetztige Verzeichnis vorhanden ist
# (Nummer aus $countdat)
if [ ! -d $count ] ; then
mkdir $count
fi
# tar-Befehl zum Packen der Dateien absetzten
# Dateinamen ist Schleifenzaehler + .tar.gz
# Fehler werden in ein Datei geschrieben
cd $para
tar -czf $ziel$count/$n.tgz * 2>>$error
fi
done
# Zahl in $count + +1 und in $countdat ablegen
count=$(( $count + 1 ))
echo $count > $countdat
# Verzeichnis $ziel auslesen und in $liste schreiben
cd $ziel
ls > $liste
# Errechnen welche Ordner zu alt sind
loesche=$(( $count - $anzahl ))
# zeilenweises Einlesen der Datei $liste
n=0
for i in $(cut -d: -f1 $liste); do
n=$(( $n + 1 ))
# Vergleichen welche Ordner geloescht werden sollen
# und diese loeschen
if [ $i -lt $loesche ] ; then
rm -r $i
fi
done
# Loeschen der Hilfsdatei $liste
rm $liste
# Beenden des Scriptes
# und absetzen einer Erfolgsmail oder einer Mail
# mit Fehlermeldungen vom TAR-Befehl
if [ ! -s $error ] ; then
t1="Backup Script erfolgreich ausgeführt!"
t2=`date`
echo $t1 $t2 | mail -s "Ihr Backup Script" $mail
exit 0
else
t1=`more $error`
echo $t1 | mail -s "Ihr Backup Script" $mail
rm $error
exit 1
fi