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.