Резервное копирование (бэкап) Postgresql на windows с удалением старых файлов

Резервное копирование Postgresql на windows и удаление старых файлов, я организовал с помощью bat файлов. базы копируются с помощью pg_dump. Резервные копии сжимаются средствами pg_dump. Резервные копии хранятся 7 дней. Для каждой базы данных нужно создать каталог, с названием, совпадающим с именем базы.

	@echo off
	cd C:\backup
	set PATH=%PATH%;%ProgramFiles%\PostgreSQL 1C\12\bin;%ProgramFiles%\7-Zip
rem	echo %PATH%

rem 	взять время  заменить точки на подчеркивание. Нужно, чтобы вместо 0 не было пробела во времени
	for /f "delims=:, tokens=1,2,3" %%i  in ("%time%") do (set t=%%i_%%j_%%k)
	set t=%t: =0%

	set datestr=%date:~-4,4%_%date:~-7,2%_%date:~-10,2%_%t%

rem	echo datestr is %datestr%

	set BASENAME=basename
	set NUM_COPY=5
	set bkp_dir=C:\backup\%BASENAME%\
	set BACKUP_FILE=%BASENAME%_%datestr%.bropgfull
	echo backup file name is %BACKUP_FILE%
	echo backup BASE name is %BASENAME%
rem	Password Progress
	SET PGPASSWORD=xxxxxxxxxx

	echo off
rem	cd "C:\Program Files\PostgreSQL 1C\12\bin"
	pg_dump -h localhost -p 5432 -U postgresp -F c -b -v -f %bkp_dir%%BACKUP_FILE% %BASENAME% 2>backup.log

REM 	Анализ кода завершения
	IF NOT %ERRORLEVEL%==0 GOTO Error
	GOTO Successfull
REM 	В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
	:Error
	DEL %bkp_dir%%BACKUP_FILE%
REM	MSG * "Ошибка при создании резервной копии базы данных. Смотрите backup.log."
	ECHO %DATESTR% Ошибки при создании резервной копии базы данных %BACKUP_FILE%. Смотрите отчет backup.log. >> backup.log
	GOTO End
REM 	В случае удачного резервного копирования просто делается запись в журнал
	:Successfull
	ECHO %DATESTR% Успешное создание резервной копии %BACKUP_FILE% >> backup.log
	GOTO End
	:End


rem	cd C:\backup
rem	7z a -tzip %BACKUP_FILE%.zip %BACKUP_FILE%
rem	del %BACKUP_FILE%

powershell -executionpolicy bypass -command "Get-ChildItem -Path %bkp_dir% -file | Sort-Object creationtime -Descending | Select-Object -skip %NUM_COPY% | ForEach-Object {Remove-Item $_.FullName}"

К папке, где распложены эти файлы закрываем доступ всем кроме администраторов так как в файле в открытом виде хранится пароль пользователя postgres , bat файл запускаем через планировщик Windows

Ну ещё не нужно забывать про обновление статистики и вакуум.

bat файл с бэкапом  и удалением старых файлов pgsql_bkp

bat файл с удалением старых файлов del_old