четверг, 6 июня 2019 г.

Скрипт архивирования pg_probackup


@echo off
cls
SET id=0
SET dateid=0
SET status=0
SET curdate=%date:~-4%-%date:~3,2%-%date:~0,2%
SET PROBACKUP=c:\pg_probackup
set var=0
set mytmp=d:
rem set mytmp=%temp%
rem вывести результат show в файл
"c:\Program Files\Pg_ProBackup\2.0.27\pg_probackup" show -B %PROBACKUP% > %mytmp%\id.txt

rem вывести каждую строку
For /F "delims=" %%i in ( %mytmp%\id.txt) do (
 echo %%i > %mytmp%\id1.txt
 rem echo %%i
 rem findstr /C:"data " %mytmp%\id2.txt && echo poymal||echo ne poymal
 rem найти первую строку c "data "
 findstr /C:"data " %mytmp%\id1.txt > NULL
 rem если нашли первую строку c "data " уходим из цикла
 IF NOT ERRORLEVEL 1 (Goto:Error)
 )
rem ничего не нашли уходим из программы
exit

:Error
rem type %mytmp%\id2.txt
echo Found.

rem получить ID последнего архива
FOR /F "tokens=3,* delims= " %%j IN (%mytmp%\id2.txt) do set id=%%j
echo %id%

rem получить date последнего архива
FOR /F "tokens=4,* delims= " %%k IN (%mytmp%\id2.txt) do set dateid=%%k
echo %dateid%

rem получить status последнего архива
FOR /F "tokens=15,* delims= " %%l IN (%mytmp%\id2.txt) do set status=%%l
echo %status%

echo 12345
SET BACKUPDIR=d:\backup
SET DIR=%PROBACKUP%\backups\data\%id%
echo %DIR%
SET NAME=%id%
SET FILENAME=%BACKUPDIR%\%date:~-4%_%date:~3,2%_%date:~0,2%_%NAME%.7z
echo %FILENAME%
SET PATH_7Z=d:\7z
echo %PATH_7Z%
SET PASSWORD=VZZETcB1eI
echo %PASSWORD%
SET LOG=%BACKUPDIR%\%date:~-4%_%date:~3,2%_%date:~0,2%_%NAME%.log
echo %LOG%

rem если дата архива , статус и имя OK
if  %dateid%==%curdate% (
   rem если статус архива OK
   if %status%==OK (
     rem если id архива OK
     if NOT %id%==0 (
        rem CALL %PATH_7Z%\7za.exe a %FILENAME% -mmt8 -mx1 -t7z -v2000m %DIR%\*  -p%PASSWORD% >%LOG% 2>&1
        CALL %PATH_7Z%\7za.exe a %FILENAME% -mmt8 -mx1 -t7z %DIR% >%LOG% 2>&1
        )
      )
    )

pause

Комментариев нет:

Отправить комментарий