Главная » Статьи » Автоматизация резервного копирования и восстановления БД 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
@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
@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
Автор: Хуснутдинов Назир Каримович (Wild Pointer)
Дата: 16.05.2013
Дата: 16.05.2013