четверг, 4 июля 2019 г.

Бэкап POSTGRESQL базы. Скрипт bat


1) Установить 7zip (x64) 
2) Создать папку C:\dump 
3) Положить туда скрипт backup_sql
4) Подключить диск с архивом
5) Поправить в скрипте строку 45 "set destination" указав путь где будет храниться архив.


В случае проблем, добавляем в скрипте в самом конце с новой строки cmd и запускаем, что бы увидеть вывод и ошибки.





REM Бэкап POSTGRESQL базы 
CLS
ECHO OFF
CHCP 1251
REM установка переменных окружения
SET PGBIN=c:\Program Files\PostgreSQL\9.3\bin
SET PGDATABASE=
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=
SET PGPASSWORD=
REM —мена диска и переход в папку из которой запущен bat-файл
%~d0
CD %~dp0
REM формирование имени файла резервной копии и файла-отчета
REM формируем корректную дату без привязки к локали системы
for /f %%a in ('wmic path win32_LocalTime Get Day^,Month^,Year /value') do >nul set "%%a"
    set Month=00%Month%
    set Month=%Month:~-2%
    set Day=00%Day%
    set Day=%Day:~-2%

SET DATETIME=%Day%-%Month%-%Year%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
SET DUMPFILE=%PGDATABASE%_%DATETIME%.backup
SET LOGFILE=%PGDATABASE% %DATETIME%.log
SET DUMPPATH="Backup\%DUMPFILE%"
SET LOGPATH="Backup\%LOGFILE%"
REM —оздание резервной копии
IF NOT EXIST Backup MD Backup
CALL "%PGBIN%\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH%
REM јнализ кода завершени¤
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM ¬ случае ошибки удал¤етс¤ поврежденна¤ резервна¤ копи¤ и делаетс¤ соответствующа¤ запись в журнале
:Error
DEL %DUMPPATH%
MSG * "ќшибка при создании резервной копии базы данных. —мотрите backup.log."
ECHO %DATETIME% ќшибки при создании резервной копии базы данных %DUMPFILE%. —мотрите отчет %LOGFILE%. >> backup.log
GOTO End
REM ¬ случае удачного резервного копировани¤ просто делаетс¤ запись в журнал
:Successfull
ECHO %DATETIME% ”спешное создание резервной копии %DUMPFILE% >> backup.log
GOTO End
:End

REM удаление файлов из временного хранилища старше 5 дней
forfiles /p "C:\dump\Backup" /S /D -5 /C "cmd /c del /f /a /q @file"

REM архиваци¤ и перенос в основное хранилище.
set source1="C:\dump\%DUMPPATH%"
set source2="C:\dump\%LOGPATH%"
set destination="P:\TRSPRM_sql\trsprm2"

set curdate=%Day%-%Month%-%Year%

"C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -mx7 -r0 %destination%\backup_%curdate%.zip "%source1%" "%source2%"

REM удаление архивов из постоянного хранилища старше 30 дней
forfiles /p "%destination%" /S /D -30 /C "cmd /c del /f /a /q @file"

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

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