Im letzten Artikel habe ich das Thema PRE und POST Backup Skripte für VMware behandelt. Das wird i.d.R. eingesetzt um applikationskonsistente Snapshot-Backups (mit VMware VADP kompatibler Backup-Software) zu erzeugen.
Das Verfahren hat einen Nachteil. Egal welcher Wochentag bzw. welches Datum – man kann zunächst keine unterschiedliche Fallbehandlung mehr durchführen.
Workaround / Beispiel:
Eine Pervasive PSQL Datenbank soll sonntags OFFLINE, die restlichen Tage ONLINE gesichert werden.
Mit dem Tool butil kann man Pervasive PSQL Datenbanken in die „continious operation“ Betriebsart versetzen und so konsistent sichern. Dazu führt man vor dem Snapshot Erstellen das Tool butil mit dem Parameter -startbu und danach mit -endbu für jede Datenbank aus.
Für das OFFLINE Backup wird der Pervasive PSQL Datenbank-Dienst gestoppt.
Die Datenbank-Datendateien *.BIS liegen unter S:\DGU, Pervasive PSQL Binaries unter C:\PVSW\Bin.
C:\Program Files\VMware\VMware Tools\backupScripts.d\vcb.bat
echo off if "%1" == "freeze" goto doFreeze goto doThaw :doFreeze call c:\batch\vadp_backup\pre-freeze-script.bat goto EOF :doThaw call c:\batch\vadp_backup\post-thaw-script.bat :EOF
c:\batch\vadp_backup\pre-freeze-script.bat
REM *** pre backup *** @echo off REM Wochentag berechnen... FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a set /a "TwoDigitYearMax=2038%%1000" if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2 set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 If %dow% equ 1 set "WoTa=Montag" If %dow% equ 2 set "WoTa=Dienstag" If %dow% equ 3 set "WoTa=Mittwoch" If %dow% equ 4 set "WoTa=Donnerstag" If %dow% equ 5 set "WoTa=Freitag" If %dow% equ 6 set "WoTa=Samstag" If %dow% equ 7 set "WoTa=Sonntag" if "%WoTa%" equ "Sonntag" goto OFFLINE :ONLINE REM ONLINE Backup Pervasive SQL echo Heute ist ein %WoTa% - Online-Backup @echo off set PVSW=C:\PVSW\Bin echo %DATE% / %TIME% SET DGU=S:\DGU if not exist %DGU%\*.BIS goto ERR1 for %%X in (%DGU%\*.BIS) do ( echo %%X %PVSW%\BUTIL -startbu %%X echo ########## ) goto ENDE :ERR1 echo Keine Dateien %DGU%\*.BIS gefunden. goto ENDE :OFFLINE REM OFFLINE Backup Pervasive SQL echo Heute ist ein %WoTa% - Offline-Backup net stop "Pervasive.SQL (transactional)" /y goto ENDE :ENDE
c:\batch\vadp_backup\post-thaw-script.bat
REM *** post backup *** @echo off REM Wochentag berechnen... FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a set /a "TwoDigitYearMax=2038%%1000" if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2 set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 If %dow% equ 1 set "WoTa=Montag" If %dow% equ 2 set "WoTa=Dienstag" If %dow% equ 3 set "WoTa=Mittwoch" If %dow% equ 4 set "WoTa=Donnerstag" If %dow% equ 5 set "WoTa=Freitag" If %dow% equ 6 set "WoTa=Samstag" If %dow% equ 7 set "WoTa=Sonntag" if "%WoTa%" equ "Sonntag" goto OFFLINE :ONLINE REM ONLINE Backup Pervasive SQL echo Heute ist ein %WoTa% - Online-Backup @echo off set PVSW=C:\PVSW\Bin echo %DATE% / %TIME% SET DGU=S:\DGU if not exist %DGU%\*.BIS goto ERR1 for %%X in (%DGU%\*.BIS) do ( echo %%XX %PVSW%\BUTIL -endbu %%X echo ########## ) goto ENDE :ERR1 echo Keine Dateien %DGU%\*.BIS gefunden. goto ENDE :OFFLINE REM OFFLINE Backup Pervasive SQL echo Heute ist ein %WoTa% - Offline-Backup net start "Pervasive.SQL (transactional)" /y goto ENDE :ENDE
Danke an Miniversum für die Formel zur Wochentagsberechnung.