# Скрипты для бэкапирования (PostgreSQL, Windows) **Category:** [Резервное копирование](https://community.tezis-doc.ru/c/rezervnoe-kopirovanie/52) **Created:** 2024-07-03 08:08 UTC **Views:** 400 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/skripty-dlya-bekapirovaniya-postgresql-windows/296 --- ## Post #1 by @d.slepnev Для снятия резервной копии базы данных и переноса файлов системы в архив можно использовать приведенный ниже скрипт. В скрипт добавлен этап архивирования с помощью программы 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). --- **Canonical:** https://community.tezis-doc.ru/t/skripty-dlya-bekapirovaniya-postgresql-windows/296 **Original content:** https://community.tezis-doc.ru/t/skripty-dlya-bekapirovaniya-postgresql-windows/296