Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # ----- ABSCHNITT : Modul Identifikation ------------------------------
- #
- # Modul Name : nachtsi.sh
- # . Funktion : Nachtsicherung aller Mandanten komplett
- # . Verwendung : Nachtsicherung
- # Autor : U. Stoesser
- # Verantwortlich : us
- # Kontrolle : fl
- # Copyright : (c)1990-2005 ABAS Software AG napiszar.com
- # Y2K-Status : ok; sd; 10.03.1999 puruttya.hu
- #
- # ----- ABSCHNITT : Modul Beschreibung ---------------------------------
- #
- # Datensicherung der abas Installation mit s3tar.
- # Resultat wird in $HOMEDIR/sicherung protokolliert.
- # Aufruf per crontab
- #
- # Parameter: keiner
- #
- #
- # Gesichert wird alles ab HOMEDIR;
- # Die Pfad-Variablen der Mandantenprofiles und die Datei $HOMEDIR/unix.f
- # (nicht Windows NT) werden ebenfalls beruecksichtigt.
- #
- # Einzelne Mandanten von der Sicherung ausschliessen:
- # Hat ein Mandant in $HOMEDIR/mandantdir.env den Eintrag
- # "NO_BACKUP = 1"
- # wird er nicht mitgesichert, wenn er nicht unterhalb des HOMEDIR liegt
- #
- # ------------------------------------------------------------------------
- # set -x
- # ----- ABSCHNITT : Optionen ---------------------------------------------
- # wg. PATH zuerst die Abfrage der Option
- # ----- ABSCHNITT : Defines, Prozeduren, Typen und Daten -----------------
- name=$0
- progname=`basename $name`
- DEFAULTTERM=s3noesc
- pid=$$
- ergdat=$TMP/ergdat.$pid
- label=/tmp/label1
- export DEFAULTTERM SPR label
- # Label -> NICHT UEBERSETZEN!
- LABELTEXT="EKS-Komplettsicherung"
- # Meldungstexte uebersetzen
- msgprep=1
- LABELTEXT1="abas-ERP-Komplettsicherung"
- FEHLER1="Datei `pwd`/denv.sh fehlt - envmake aufrufen"
- FEHLER3="Kann Umgebung in `pwd` nicht setzen"
- FEHLER4="Sicherungs-Sperre konnte nicht freigegeben werden! Exitcode = "
- FEHLER5="Sicherung gescheitert!"
- FEHLER6="Beim Sichern mssen alle Mandanten unterbrochen sein!"
- FEHLER7="Kein passendes Laufwerk gefunden."
- MELDTEXT1="NICHT gesichert (ausgeschlossen):"
- msgprep=0
- # ---- Procedures ----------------------------------------
- myexit()
- {
- ec=$1
- rel=$2
- if [ "$rel" = f ]
- then eval $freigeben
- fr_ec=$?
- if [ $fr_ec -ne 0 ]
- then ech "${FEHLER4}$fr_ec" >> $HOMEDIR/sicherung
- ech "${FEHLER4}$fr_ec" >&2
- fi
- else if [ -n "$rel" ]
- then ech "$rel" >> $HOMEDIR/sicherung
- ech "$rel" >&2
- fi
- fi
- rm -f $ergdat
- rm -f $label
- exit $ec
- }
- usage_exit()
- {
- ech "usage: <absoluter_PATH>/$progname" >&2
- ech " PATH muss im Aufruf enthalten sein!" >&2
- myexit 10 f
- }
- # ----- ABSCHNITT : Hauptprogramm ----------------------------------------
- # main
- # set -x
- # Da im crontab-Aufruf der Pfad angegeben wird, ist dies eine gute Moeglichkeit
- # das s3-Dir (HOMEDIR) zu bestimmen.
- MYPATH=`dirname $name`
- # nachtsi.sh liegt in $S3DIR/bin =>
- S3DIR=`dirname $MYPATH`
- if [ -z "$S3DIR" -o " $S3DIR" = " ." -o "$progname" = "$name" ]
- then ech "s3-Dir (HOMEDIR) \"$S3DIR\" fehlt" >&2
- usage_exit
- fi
- cd $S3DIR
- # Nun wird die korrekte Umgebung bestimmt (inkl. HOMEDIR, PATH, ...)
- if [ -s ./denv.sh ]
- then eval `sh ./denv.sh` || myexit 1 "$FEHLER3"
- else myexit 1 "$FEHLER1"
- fi
- . protokollierung.sh
- if ! pruefeProtokollDateiUndLegeSieAnFallsNichtVorhanden $HOMEDIR/sicherung;then
- myexit 1
- fi
- ech "$LABELTEXT1:" >&2
- echo "" >> $HOMEDIR/sicherung
- ech "$LABELTEXT1:" >> $HOMEDIR/sicherung
- # echo $PATH
- # pause.sh
- trap "myexit 2 f" 1 2 3 15
- raeum_tmp.sh -w
- if [ -n "$IS_WINDOWS" ]; then
- MDIR="$HOMEDIR"
- else
- unix_f="$HOMEDIR/unix.f"
- if [ -f "$unix_f" ];then
- UNIX_F=`cat "$unix_f"`
- else
- UNIX_F=
- fi
- MDIR="$HOMEDIR $UNIX_F"
- fi
- for mand in `mdir.sh`
- do cd $mand
- . pfad.sh
- # Abfrage, ob Mandant gesichert werden soll;
- # -> Variable NO_BACKUP aus der Umgebung ($HOMEDIR/mandantdir.env)
- nobackup=0
- nobackup=`envmake -x $mand -q NO_BACKUP 2>$TMP/envmake.nachtsi.sh.err`
- if [ $? != 0 ]
- then ech "envmake gescheitert" >> $HOMEDIR/sicherung
- ech "envmake gescheitert" >&2
- else rm -f $TMP/envmake.nachtsi.sh.err
- fi
- if [ "$nobackup" = "1" ]
- then echo "$MELDTEXT1 $mand" >> $HOMEDIR/sicherung
- else MDIR="$MDIR $mand"
- fi
- done
- MDIR=`base_path.sh $MDIR`
- echo "$MDIR"
- freigeben=`ganzunter.sh SICHERN $pid`
- if [ "$?" != 0 ]
- then ech "$FEHLER6" >> $HOMEDIR/sicherung
- ech "$FEHLER6" >&2
- ech "$FEHLER5" >> $HOMEDIR/sicherung
- ech "$FEHLER5" >&2
- myexit 3 f
- fi
- if eval `laufwerk.sh -d`
- then : ok
- else ech "$FEHLER7" >> $HOMEDIR/sicherung
- ech "$FEHLER7" >&2
- ech "$FEHLER5" >> $HOMEDIR/sicherung
- ech "$FEHLER5" >&2
- myexit 4 f
- fi
- writelabel.sh "$LABELTEXT"
- cd /
- s3tar -d c $label $MDIR
- estate=$?
- if [ $estate -eq 0 ]
- then ech -n "O.K.: `date` Schreiben auf Band:" >> $HOMEDIR/sicherung
- echo " $D" >> $HOMEDIR/sicherung
- echo "$MDIR" >> $HOMEDIR/sicherung
- echo "`date`" > $HOMEDIR/zeit
- ech -n "O.K.: `date` Schreiben auf Band:" >&2
- echo " $D"
- echo "$MDIR" >&2
- else ech "FEHLER: `date` Schreiben auf Band." >> $HOMEDIR/sicherung
- ech "FEHLER: `date` Schreiben auf Band." >&2
- fi
- # Sperre schon nach schreiben freigeben (andre Nachtlaeufer warten ev. schon).
- eval $freigeben
- fr_ec=$?
- if [ $fr_ec -ne 0 ]
- then ech "${FEHLER4}$fr_ec" >> $HOMEDIR/sicherung
- ech "${FEHLER4}$fr_ec" >&2
- fi
- if [ $estate -eq 0 ]
- then s3tar -d t > ${DEVNULL:-/dev/null}
- estate=$?
- if [ $estate -eq 0 ]
- then ech "O.K.: `date` Probelesen von Band" >> $HOMEDIR/sicherung
- ech "O.K.: `date` Probelesen von Band" >&2
- else ech "FEHLER: `date` Probelesen von Band" >> $HOMEDIR/sicherung
- ech "FEHLER: `date` Probelesen von Band" >&2
- fi
- else : ok # Fehler beim Schreiben => Kein Probelesen
- fi
- echo "" >> $HOMEDIR/sicherung
- myexit $estate
Advertisement
Add Comment
Please, Sign In to add comment