home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
M.u.C.S. Disc 2000
/
MUCS2000.iso
/
anwend
/
gemar306
/
gemini
/
backpar.mup
< prev
next >
Wrap
Text File
|
1997-01-21
|
7KB
|
215 lines
#!mupfel
#
# @(#) BACKPAR.MUP, Setzt die Parameter für die Backup-Batches
# @(#) Roland Behme, 28.01.96
# @(#) Erweiterungen von Uwe Mindrup, 13.03.96
# Änderungen:
# - Ein einheitliches, erweitertes Logfile
# - Einsatz von Funktionen statt Direktkommandos.
# - Eine einzelne Backup.par-Datei statt vieler kleiner SETENV-Dateien.
# - Alle Environment-Variablen werden GROSS geschrieben.
# - alle lokal benutzten Environment-Variablen beginnen mit GB_ (für
# GemarBackup)
# - Im lastback.dat und lastfull.dat wird der Bandname und das Set
# des letzten Backups angegeben.
# - Umbenennung von stream.mup in backstrm.mup, damit alle beteiligten
# mup-Dateien mit dem gleichen Präfix anfangen.
#
# @(#) Erweiterungen von Steffen Engel, 21.03.96
# Änderungen:
# -Dailies wieder auf mehreren, numerierten Bändern
# -automatische Pflege des Main-Logfiles (gawk nötig)
# -Anpassungen an parallel entstandene Änderungen:
# -Zeitvergleiche über date +%u statt find
# -keine lastfull.dat/lastback.dat mehr
# -Alle lokalen Prozeduren zur Erkennung mit _ am Anfang
# -Schalter GB_TAPELOGS
# -Gemar-Batches wieder direkt rufbar (autarkes backlog)
# -Beschleunigung durch default-export von Variablen, statt Vorinitialisierung
# -Counter-fixierung eliminiert. 'Bescheid'
#
#
# Benötigte externe Tools:
# printenv (mupfeltools)
# date (mupfeltools)
# printf (GNU-Utilities)
# gawk (GNU-Utilities)
# Gemini
# GEMAR
#
# ***************************************************************************
# Hier bitte die Einstellungen vornehmen
# Pfad von GEMAR
setenv GB_GEMARDIR 'D:\usr\hm2\user\gemar'
# Pfad für die GEMAR-Batchdateien:
setenv GB_BATCHDIR $GB_GEMARDIR\batches
# Pfad für die Logdateien
setenv GB_LOGDIR $GB_GEMARDIR\batches\logs
# Soviele Tage zwischen den Fullbackups
setenv GB_FULLDAYS 7
# Wieviele Generationen (Bänder für Fullbackups) werden verwendet?
setenv GB_MAXGEN 5
# Die Bänder sollten sinnvoll beschriftet sein. Diese Beschriftung wird hier
# festgelegt.
# Fullbackup-Bänder hei₧en dann z.B. Full-1, Full-2, Full-3 etc.
# Die Namen werden in der gemeinsamen Logdatei "backup.log" benutzt.
# Zunächst die Beschriftung für Fullbackup; die Nummer des aktuellen Bandes
# wird später automatisch hinzugefügt:
setenv GB_FULLNAME 'Full Backup '
# Nun noch der Name für die täglichen Sicherungen:
setenv GB_DAILYNAME 'Daily Backup '
# maximale auf ein Band zu schreibende Zahl an Fullbackups
setenv GB_MAXFULLPERTAPE 2
# Für jedes Band eine Logdatei 'FULL.n' 'DAILY.n' ind der die Backups
# auf diesem Band protokolliert werden [TRUE|FALSE]
setenv GB_TAPELOGS 'FALSE'
# Nach den Aktionen Tastendruck abwarten? [TRUE|FALSE]
setenv GB_WAITFORKEY 'FALSE'
# ***************************************************************************
# Ende des Parameterbereiches für User
# ***************************************************************************
#############################################################################
# ab hier interne Parameter und Funktionen, nur für den Hausgebrauch
# Format für DATE
setenv CFTIME '%x, %X'
#setenv GB_BATCHTEST 'TRUE'
setenv GB_BATCHTEST 'FALSE'
if [ $GB_BATCHTEST = 'TRUE' ] ; then
GB_LOGDIR=$TMPDIR # Zum Test woanders hin
fi
#============================================================================
# Einige Hilfsfunktionen
#============================================================================
# Differenz bestimmen
_days_between()
{
expr $2 - $1
}
# heutiger Tag in 'Tagen seit 1.1.70'
_today()
{
expr $(date '+%u / 3600 / 24')
}
_WriteParameterFile()
# Parameter zurückschreiben
{
echo '#!mupfel' >"$GB_PAR"
echo '# @(#) Parameterfile written by backlog.mup' >>"$GB_PAR"
echo 'setenv GB_AKTGEN' "$GB_AKTGEN" >>"$GB_PAR"
echo 'setenv GB_DAILY_CNT' "$GB_DAILY_CNT" >>"$GB_PAR"
setenv GB_LOCALCNT 1 # Lokale Variable
# FullCount-Variablen erzeugen:
while [ "$GB_LOCALCNT" -le "$GB_MAXGEN" ] ; do
_VAL=$(printenv GB_FULLCOUNT_$GB_LOCALCNT)
echo 'setenv GB_FULLCOUNT_'$GB_LOCALCNT "${_VAL:=0}" >>"$GB_PAR"
GB_LOCALCNT=`expr "$GB_LOCALCNT" + 1` # Wert erhöhen
done
echo >>"$GB_PAR"
echo 'setenv GB_LASTFULLBACKUP' "$GB_LASTFULLBACKUP" >>"$GB_PAR"
echo 'setenv GB_LASTDAILYBACKUP' "$GB_LASTDAILYBACKUP" >>"$GB_PAR"
}
_MakeLogFile()
# Logdatei neu aufbauen.
# Parameter: --/--
# Seiteneffekte: Die globalen Variablen GB_NAME und GB_LOGFILE
# werden benutzt (gelesen).
{
if [ $GB_TAPELOGS = 'TRUE' ]
then
echo 'Liste der Backups auf Band "' $GB_NAME '":' >$GB_LOGFILE
echo ' Datum Uhrzeit Set' >>$GB_LOGFILE
echo '==================================================' >>$GB_LOGFILE
fi
}
_IncrFullCount()
# Erhöhung des aktuellen FullCount_n-Zählers.
# Der geänderte Wert wird in der Variablen GB_FULLCOUNT (ohne Index)
# abgelegt.
# Parameter: --/--
# Seiteneffekt: Die Variable GB_FULLCOUNT wird verändert.
{
_VAL=$(printenv GB_FULLCOUNT_$GB_AKTGEN)
setenv GB_FULLCOUNT `expr ${_VAL:=0} + 1`
if [ "$GB_FULLCOUNT" -gt "$GB_MAXFULLPERTAPE" ]
then
setenv GB_FULLCOUNT 1
fi
setenv GB_FULLCOUNT_"$GB_AKTGEN" $GB_FULLCOUNT
}
# Pfad und Name der Backup-Parameterdatei
setenv GB_PAR "$GB_LOGDIR"\backup.par
_ReadParameterFile()
# Backup-Parameterdatei einlesen.
# Parameter: --/--
# Falls nicht vorhanden, werden die Variablen auf einen Initialwert gesetzt.
# Die Backup-Log-Datei wird ebenfalls angelegt, falls noch nicht vorhanden.
{
setenv GB_AKTGEN 0
setenv GB_DAILY_CNT 0
setenv GB_LASTFULLBACKUP 0
setenv GB_LASTDAILYBACKUP 0
if [ -f "$GB_PAR" ] # Datei vorhanden?
then
. "$GB_PAR" # dann laden
else
# FullCount-Variablen erzeugen:
setenv GB_LOCALCNT 1 # Lokale Variable
while [ "$GB_LOCALCNT" -le "$GB_MAXGEN" ] ; do
setenv GB_FULLCOUNT_"$GB_LOCALCNT" 0
GB_LOCALCNT=`expr "$GB_LOCALCNT" + 1` # Wert erhöhen
done
fi
}
#============================================================================
# Hier beginnt die eigentliche Bearbeitung des Scripts:
#============================================================================
set +S # auf gar keinen Fall Slash-conf!
# Pfad und Name der gemeinsamen Log-Datei.
setenv GB_LOG "$GB_LOGDIR"\backup.log
# Datei Backup.Log anlegen, falls noch nicht vorhanden.
# Die Datei nimmt alle Logging-Informationen auf.
# Beim Anlegen wird einmalig ein Header geschrieben.
if [ ! -f "$GB_LOG" ]
then
echo ' Datum Uhrzeit Bandname' >"$GB_LOG"
echo '======================================================================'>>"$GB_LOG"
fi
# Parameterdatei immer(!) einlesen
_ReadParameterFile