Сегодня мы
рассмотрим резервирование БД одной из тройки распространенных СУБД - PostrgreSQL.
В сети можно
найти официальный мануал, который собственно описывает несколько способов
снятия дампа с БД. НО при наличии нескольких баз он превращается в запутанное
чудовище. Ниже я предоставлю текст скрипта, в который просто необходимо
добавить имена баз, и наслаждаться резервными копиями.
@ECHO on
setlocal EnableDelayedExpansion
rem global conf
SET dr=%1
set df=%2
set f_date=%date%
set f_year=%f_date:~6,4%
set f_month=%f_date:~3,2%
set f_day=%f_date:~0,2%
SET ddate=%f_year%_%f_month%_%f_day%
rem cleaning
net use x: /delete /y
net use x: \\172.172.172.172\bases\1c8
del /F /S /Q c:\BackUp\temp\
forfiles /P c:\BackUp\%dr% /S /D -%df%
/C "cmd /c del /F /S /Q
@file"
forfiles /P x:\BackUp\%dr% /S /D -%df%
/C "cmd /c del /F /S /Q
@file"
rem base conf
set elem[1]=Base
set elem[2]=Base2
set start=1
set end=2
set i=1
rem GO!
for /L %%i in (%start%,1,%end%) do (
echo db name -- !elem[%%i]!
set db=%ddate%_!elem[%%i]!
del %ddate%_!elem[%%i]!
"C:\Program
Files\PostgreSQL\9.0.3-3.1C\bin\pg_dump.exe" --blobs --clean
--file=C:\backup\temp\%ddate%_!elem[%%i]!.pg.sql --format=plain -U
postgres !elem[%%i]!
c:\backup\script\7za.exe a -t7z c:\BackUp\%dr%\%ddate%_!elem[%%i]!.pg.7z
c:\BackUp\temp\%ddate%_!elem[%%i]!.pg.sql
move c:\BackUp\%dr%\%ddate%_!elem[%%i]!.pg.7z
x:\BackUp\%dr%\%ddate%_!elem[%%i]!.pg.7z
)
net use x: /delete /y
Скрипт
очень простой. В первой часть вычисляем
дату, во второй проводим очистку папок.
В третей части вводим список баз, и выставляем счётчики начала и конца списка баз. Далее последовательно
перебираем массив с именами файлов баз и выполняем резервное копирование.
Аргументами
к файлу скрипта необходимо указывать модификатор тип копии (day/week/month - и соответственно
в корневых папках должны быть соответствующие подпапки), а так же срок хранения
копий в днях.
Валерий Кулик
Комментариев нет:
Отправить комментарий