Для снятия резервной копии базы данных и переноса файлов системы в архив можно использовать приведенный ниже скрипт. В скрипт добавлен этап архивирования с помощью программы 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).