воскресенье, 5 июля 2020 г.

Скрипт backup postgresql под windows

Автоматический перезапуск службы агента сервера 1С — скрипт + расписание

pg_verify_checksums.exe --pgdata=F:\PostgreSQL\11.7-5.1C\data\
pg_probackup checkdb ... || systemctl stop postgresql

@ECHO OFF
CHCP 1251>Nul
echo Начинаем архивирование!
echo Не закрывайте это окно, оно закроется само.
echo Окно можно свернуть.
echo Программы 1С не будут доступны до завершения.
SETLOCAL ENABLEDELAYEDEXPANSION
SET backup_data_dir=F:\back\
SET pg_bin_dir=F:\PostgreSQL\11.7-5.1C\bin\
SET PGHOST=localhost
SET PGPORT=5432
SET pg_user=postgres
SET PGPASSWORD=pass
REM SET pg_lst_db=psql.exe --username=%pg_user% --list --field-separator=^; --tuples-only --no-align
SET pg_lst_db=%pg_bin_dir%psql.exe --username=%pg_user% -A -t -c "SELECT datname FROM pg_database"
REM Если батник будет запускаться планировщиком при загрузке
REM для исключения повторных срабатываний в один день
REM FORFILES /p %backup_data_dir% /M *.PGDMP /D 0 >nul 2>&1
REM if not errorlevel 1 exit
REM Стопорим сервер 1с
CALL "C:\Program Files\1cv8\8.3.17.1386\bin\ragent.exe" -stop
REM Задержка
ping -n 16 localhost>Nul
REM SET PGBASES=(postgres template0 template1)
REM CD /D %pg_bin_dir%
REM Удаляем в папке backup_data_dir все файл старше DAY
SET DAY=5
forfiles /p %backup_data_dir% /m * /s /d -%DAY% /c "cmd /c del @path /q" >nul 2>&1
REM FOR /f "delims=; tokens=1" %%d IN ('!pg_lst_db!^|find /v "template0";^|find /v "template1";^|find /v "postgres";^|find /v "demo1"') DO (
REM echo %ERRORLEVEL%
FOR /f "delims=; tokens=1" %%d IN ('!pg_lst_db!^|find /v "template";^|find /v "postgres"') DO (
  SET file_name=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
  SET file_name=!file_name: =0!
  SET backup_file_name=%backup_data_dir%%%d-!file_name!.PGDMP
  SET log_file_name=%backup_data_dir%%%d-!file_name!.log
  SET pg_dmp_option=--clean --username=%pg_user% --format=custom --verbose --file=!backup_file_name! --dbname=%%d
  CALL %pg_bin_dir%pg_dump.exe !pg_dmp_option! 2>!log_file_name!
  SET ERROR=!ERRORLEVEL!
  REM echo !ERROR!
  IF !ERROR!==0 ECHO !file_name! Успешное создание резервной копии !backup_file_name! >> %backup_data_dir%\%%d.log
  IF NOT !ERROR!==0 ECHO !file_name! Ошибки при создании резервной копии базы данных !backup_file_name! >> %backup_data_dir%\%%d.log
)
REM Запускаем сервер 1с
CALL "C:\Program Files\1cv8\8.3.17.1386\bin\ragent.exe" -start

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

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