Главная » Статьи » Автоматизация резервного копирования и восстановления БД Firebird: Пакетный файл Windows.   Печатная форма страницы

Автоматизация резервного копирования и восстановления БД Firebird: Пакетный файл Windows.

Один из способов автоматизации резервного копирования базы данных Firebird под Microsoft Windows это использование консольной утилиты "gbak.exe" входящей в состав дистрибутива.
Обычно распологается по адресу "C:\Program Files\Firebird\Firebird_X_X\bin\gbak.exe", где Firebird_X_X - версия вашего сервера Firebird (Например Firebird_2_5).
Для удобства можно использовать пакетный файл (batch file).

Используя разные источники и свои измышления у меня получился bat-файл такого вида:

@echo off
@setlocal
@setlocal enabledelayedexpansion
rem Используем утилиту gfix, чтобы закрыть все незакрытые транзакции, собрать мусор и проверить целостность БД:
gfix {файл или алиас БД} -user SYSDBA -password masterke -commit all
gfix {файл или алиас БД} -user SYSDBA -password masterke -sweep
gfix {файл или алиас БД} -user SYSDBA -password masterke -two_phase all

rem Копируем файл с пользователями
copy "C:\Program Files\Firebird\Firebird_2_5\security2.fdb" "{Путь к архивам}\security2.fdb"

rem Делаем резервную копию при помощи утилиты "gbak.exe"
"C:\Program Files\Firebird\Firebird_2_5\bin\gbak" -b {файл или алиас БД} "{Путь к архивам}\{Имя рез. копии БД} .fbk" -user SYSDBA -pass masterke -y {имя_файла_журнала}

rem Покажем текущую дату и время
echo %date%_%time%

rem Преобразуем формат даты к виду YYYYMMDD - для удобства сортировки по имени файла
FOR /F "tokens=1-8 delims=./- " %%a in ('echo %date%') do (set mydate=%%c%%b%%a)

rem Преобразуем формат времени к виду HHMMSS
FOR /F "tokens=1-4 delims=.: " %%i in ('echo %time%') do (set mytime=%%i%%j%%k)

rem Установим в переменную "dateTime" текущую дату и время (которая уже в удобном для нас формате)
set dateTime=%mydate%_%mytime%

rem Упаковываем при помощи архиватора 7z (путь сами укажите)
7z.exe a -t7z {Путь к архивам}\{Имя рез. копии БД}.fbk_%dateTime%.7z -r {Путь к архивам}\{Имя рез. копии БД}.fbk
rem pause

Для исполнения можно использовать различные утилиты, но проще всего воспользоваться стандартным планировщиком задач входящем в состав Microsoft Windows.

Восстановление БД:

@echo off
@setlocal
@setlocal enabledelayedexpansion

rem Распаковываем при помощи архиватора 7z (путь сами укажите)
7z.exe x -t7z {Путь к архивам}\{Имя рез. копии БД}.fbk_{Дата архива}.7z

Title Attention!!! Restore DB

"c:\Program Files\Firebird\Firebird_2_5\bin\gbak" -r {Путь к архивам}\{Имя рез. копии БД}.fbk {файл или алиас БД} -REP -user SYSDBA -pass masterke