home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / anwend / gemar306 / gemini / backpar.mup < prev    next >
Text File  |  1997-01-21  |  7KB  |  215 lines

  1. #!mupfel
  2. #
  3. # @(#) BACKPAR.MUP, Setzt die Parameter für die Backup-Batches
  4. # @(#) Roland Behme, 28.01.96
  5. # @(#) Erweiterungen von Uwe Mindrup, 13.03.96
  6. #      Änderungen:
  7. #      - Ein einheitliches, erweitertes Logfile
  8. #      - Einsatz von Funktionen statt Direktkommandos.
  9. #      - Eine einzelne Backup.par-Datei statt vieler kleiner SETENV-Dateien.
  10. #      - Alle Environment-Variablen werden GROSS geschrieben.
  11. #      - alle lokal benutzten Environment-Variablen beginnen mit GB_ (für
  12. #        GemarBackup)
  13. #      - Im lastback.dat und lastfull.dat wird der Bandname und das Set
  14. #        des letzten Backups angegeben.
  15. #      - Umbenennung von stream.mup in backstrm.mup, damit alle beteiligten
  16. #        mup-Dateien mit dem gleichen Präfix anfangen.
  17. #
  18. # @(#) Erweiterungen von Steffen Engel, 21.03.96
  19. #     Änderungen:
  20. #     -Dailies wieder auf mehreren, numerierten Bändern
  21. #     -automatische Pflege des Main-Logfiles (gawk nötig)
  22. #     -Anpassungen an parallel entstandene Änderungen:
  23. #        -Zeitvergleiche über date +%u statt find
  24. #        -keine lastfull.dat/lastback.dat mehr
  25. #        -Alle lokalen Prozeduren zur Erkennung mit _ am Anfang
  26. #     -Schalter GB_TAPELOGS
  27. #     -Gemar-Batches wieder direkt rufbar (autarkes backlog)
  28. #     -Beschleunigung durch default-export von Variablen, statt Vorinitialisierung
  29. #     -Counter-fixierung eliminiert. 'Bescheid'
  30. #
  31. #
  32. # Benötigte externe Tools:
  33. #   printenv (mupfeltools)
  34. #   date (mupfeltools)
  35. #   printf (GNU-Utilities)
  36. #   gawk (GNU-Utilities)
  37. #   Gemini
  38. #   GEMAR
  39. #
  40. # ***************************************************************************
  41. # Hier bitte die Einstellungen vornehmen
  42.  
  43. # Pfad von GEMAR
  44. setenv GB_GEMARDIR 'D:\usr\hm2\user\gemar'
  45.  
  46. # Pfad für die GEMAR-Batchdateien:
  47. setenv GB_BATCHDIR $GB_GEMARDIR\batches
  48.  
  49. # Pfad für die Logdateien
  50. setenv GB_LOGDIR $GB_GEMARDIR\batches\logs
  51.  
  52. # Soviele Tage zwischen den Fullbackups
  53. setenv GB_FULLDAYS 7
  54.  
  55. # Wieviele Generationen (Bänder für Fullbackups) werden verwendet?
  56. setenv GB_MAXGEN 5
  57.  
  58.  
  59. # Die Bänder sollten sinnvoll beschriftet sein. Diese Beschriftung wird hier
  60. # festgelegt.
  61. # Fullbackup-Bänder hei₧en dann z.B. Full-1, Full-2, Full-3 etc.
  62. # Die Namen werden in der gemeinsamen Logdatei "backup.log" benutzt.
  63. # Zunächst die Beschriftung für Fullbackup; die Nummer des aktuellen Bandes
  64. # wird später automatisch hinzugefügt:
  65. setenv GB_FULLNAME  'Full Backup '
  66.  
  67. # Nun noch der Name für die täglichen Sicherungen:
  68. setenv GB_DAILYNAME 'Daily Backup '
  69.  
  70. # maximale auf ein Band zu schreibende Zahl an Fullbackups
  71. setenv GB_MAXFULLPERTAPE 2
  72.  
  73. # Für jedes Band eine Logdatei 'FULL.n' 'DAILY.n' ind der die Backups
  74. # auf diesem Band protokolliert werden  [TRUE|FALSE]
  75. setenv GB_TAPELOGS 'FALSE'
  76.  
  77. # Nach den Aktionen Tastendruck abwarten? [TRUE|FALSE]
  78. setenv GB_WAITFORKEY 'FALSE'
  79.  
  80. # ***************************************************************************
  81. # Ende des Parameterbereiches für User
  82. # ***************************************************************************
  83.  
  84. #############################################################################
  85. # ab hier interne Parameter und Funktionen, nur für den Hausgebrauch
  86.  
  87. # Format für DATE
  88. setenv CFTIME '%x, %X' 
  89.  
  90. #setenv GB_BATCHTEST 'TRUE'
  91. setenv GB_BATCHTEST 'FALSE'
  92.  
  93. if [ $GB_BATCHTEST = 'TRUE' ] ; then
  94.   GB_LOGDIR=$TMPDIR      # Zum Test woanders hin
  95. fi
  96.  
  97. #============================================================================
  98. # Einige Hilfsfunktionen
  99. #============================================================================
  100.  
  101.  
  102.   # Differenz bestimmen
  103.   _days_between()
  104.   {
  105.     expr $2 - $1
  106.   }
  107.  
  108.   # heutiger Tag in 'Tagen seit 1.1.70'
  109.   _today()
  110.   {
  111.     expr $(date '+%u / 3600 / 24')
  112.   }
  113.  
  114.   _WriteParameterFile()
  115.   # Parameter zurückschreiben
  116.   {
  117.     echo '#!mupfel'                                      >"$GB_PAR"
  118.     echo '# @(#) Parameterfile written by backlog.mup'  >>"$GB_PAR"
  119.     echo 'setenv GB_AKTGEN' "$GB_AKTGEN"                >>"$GB_PAR"
  120.     echo 'setenv GB_DAILY_CNT' "$GB_DAILY_CNT"          >>"$GB_PAR"
  121.  
  122.     setenv GB_LOCALCNT 1        # Lokale Variable
  123.  
  124.     # FullCount-Variablen erzeugen:
  125.     while [ "$GB_LOCALCNT" -le "$GB_MAXGEN" ] ; do
  126.       _VAL=$(printenv GB_FULLCOUNT_$GB_LOCALCNT)
  127.       echo 'setenv GB_FULLCOUNT_'$GB_LOCALCNT "${_VAL:=0}" >>"$GB_PAR"
  128.       GB_LOCALCNT=`expr "$GB_LOCALCNT" + 1`  # Wert erhöhen
  129.     done
  130.     echo                                                    >>"$GB_PAR"
  131.     echo 'setenv GB_LASTFULLBACKUP' "$GB_LASTFULLBACKUP"    >>"$GB_PAR"
  132.     echo 'setenv GB_LASTDAILYBACKUP' "$GB_LASTDAILYBACKUP"  >>"$GB_PAR"
  133.   }
  134.  
  135.   _MakeLogFile()
  136.   # Logdatei neu aufbauen.
  137.   # Parameter: --/--
  138.   # Seiteneffekte: Die globalen Variablen GB_NAME und GB_LOGFILE
  139.   #                werden benutzt (gelesen).
  140.   {
  141.     if [ $GB_TAPELOGS = 'TRUE' ]
  142.     then
  143.       echo 'Liste der Backups auf Band "' $GB_NAME '":'          >$GB_LOGFILE
  144.       echo '     Datum   Uhrzeit Set'                           >>$GB_LOGFILE
  145.       echo '==================================================' >>$GB_LOGFILE
  146.     fi
  147.   }
  148.  
  149.   _IncrFullCount()
  150.   # Erhöhung des aktuellen FullCount_n-Zählers.
  151.   # Der geänderte Wert wird in der Variablen GB_FULLCOUNT (ohne Index)
  152.   # abgelegt.
  153.   # Parameter: --/--
  154.   # Seiteneffekt: Die Variable GB_FULLCOUNT wird verändert.
  155.   {
  156.     _VAL=$(printenv GB_FULLCOUNT_$GB_AKTGEN)
  157.     setenv GB_FULLCOUNT `expr ${_VAL:=0} + 1`
  158.     if [ "$GB_FULLCOUNT" -gt "$GB_MAXFULLPERTAPE" ]
  159.     then
  160.       setenv GB_FULLCOUNT 1
  161.     fi
  162.     setenv GB_FULLCOUNT_"$GB_AKTGEN" $GB_FULLCOUNT
  163.   }
  164.  
  165.  
  166. # Pfad und Name der Backup-Parameterdatei
  167. setenv GB_PAR "$GB_LOGDIR"\backup.par
  168.  
  169.   _ReadParameterFile()
  170.   # Backup-Parameterdatei einlesen.
  171.   # Parameter: --/--
  172.   # Falls nicht vorhanden, werden die Variablen auf einen Initialwert gesetzt.
  173.   # Die Backup-Log-Datei wird ebenfalls angelegt, falls noch nicht vorhanden.
  174.   {
  175.     setenv GB_AKTGEN 0
  176.     setenv GB_DAILY_CNT 0
  177.  
  178.     setenv GB_LASTFULLBACKUP 0
  179.     setenv GB_LASTDAILYBACKUP 0
  180.  
  181.     if [ -f "$GB_PAR" ]                        # Datei vorhanden?
  182.     then
  183.       . "$GB_PAR"                              # dann laden
  184.     else
  185.       # FullCount-Variablen erzeugen:
  186.       setenv GB_LOCALCNT 1                     # Lokale Variable
  187.       while [ "$GB_LOCALCNT" -le "$GB_MAXGEN" ] ; do
  188.         setenv GB_FULLCOUNT_"$GB_LOCALCNT" 0
  189.         GB_LOCALCNT=`expr "$GB_LOCALCNT" + 1`  # Wert erhöhen
  190.       done
  191.     fi
  192.   }
  193.  
  194. #============================================================================
  195. #  Hier beginnt die eigentliche Bearbeitung des Scripts:
  196. #============================================================================
  197.  
  198. set +S    # auf gar keinen Fall Slash-conf!
  199.  
  200. # Pfad und Name der gemeinsamen Log-Datei.
  201. setenv GB_LOG "$GB_LOGDIR"\backup.log
  202.  
  203. # Datei Backup.Log anlegen, falls noch nicht vorhanden.
  204. #   Die Datei nimmt alle Logging-Informationen auf.
  205. #   Beim Anlegen wird einmalig ein Header geschrieben.
  206. if [ ! -f "$GB_LOG" ]
  207. then
  208.   echo '     Datum   Uhrzeit   Bandname'                                        >"$GB_LOG"
  209.   echo '======================================================================'>>"$GB_LOG"
  210. fi
  211.  
  212.  
  213. # Parameterdatei immer(!) einlesen
  214. _ReadParameterFile
  215.