Скрипты для бэкапирования (PostgreSQL, Windows)

Для снятия резервной копии базы данных и переноса файлов системы в архив можно использовать приведенный ниже скрипт. В скрипт добавлен этап архивирования с помощью программы 7zip (должен быть установлен на сервере).

Скрипт приведен в качестве примера, требует редактирования под реалии заказчика.

rem Current Date
Set Tdate=%date:~6,4%_%date:~3,2%_%date:~0,2%
rem Postgresql path
set PG_DIR=C:\Program Files\PostgreSQL\10\bin
 
rem Tomcat path
set TOMCAT_DIR=C:\haulmont\tomcat
rem Backup root folder
set BACKUP_DIR=C:\haulmont\auto_back
 
rem Postgresql host and port
set PG_HOST=localhost
set PG_PORT=5432
rem Database name
set DB_NAME=thesis
rem Database user
set PG_USER=root
set PGPASSWORD=root
set DUMP_FILE=%BACKUP_DIR%\\%DB_NAME%_%Tdate%.dump
 
"%PG_DIR%\pg_dump.exe"  -h %PG_HOST% -p %PG_PORT% -Fp -f %DUMP_FILE% -U %PG_USER% %DB_NAME%
set TOMCAT_BACKUP_DIR=%BACKUP_DIR%\\tomcat
set FILESTORAGE_BACKUP_DIR=%BACKUP_DIR%\\filestorage
if exist "%TOMCAT_BACKUP_DIR%" goto okFS
mkdir %TOMCAT_BACKUP_DIR%
:okFS
 
 
 
xcopy %TOMCAT_DIR% %TOMCAT_BACKUP_DIR% /D /E /Y
 
 
cd /d C:\haulmont\auto_back\
7z a -tzip %Tdate%.zip *dump tomcat
del %DB_NAME%_%Tdate%.dump
rd /s /q tomcat
 
 
xcopy %Tdate%.zip C:\haulmont\auto_back\archive   /Y
 
del *.zip

Для удаления старых копий можно использовать второй скрипт. Он просматривает файлы в папке и, если их больше указанного числа, то удаляется самый старый.

@echo off
setlocal enableextensions enabledelayedexpansion
 
set sFolder=C:\haulmont\auto_back\archive
set /a iCount = 2
 
for /f "skip=%iCount% usebackq delims=" %%i in (
    `dir /b /a:-d /o:-d /t:w "%sFolder%"`
) do  del /f /q "%sFolder%\%%~i"
 
endlocal
exit /b 0

Чтобы не запрашивался пароль при выполнении бэкапа

Для Windows - в файле %APPDATA%\postgresql\pgpass.conf (%APPDATA% - это Application Data пользователя Windows, под которым будет выполняться копирование) должна быть запись вида host:port:databasename:user:password (например localhost:5432:docflow:root:root).