Содержание
gbak
Версии сервера
ВСЕ
Формат
gbak -b [backup option …] [common option …] source target
gbak -c|-r [restore option …] [common option …] source target
(-c|-r означает, что при вызове gbak нужно использовать либо -c, либо -r, но не вместе.)
Описание
gbak утилита Firebird для управления резервными копиями
В режиме бекапа source это путь к существующей БД (может включать имя сервера и\или альяс), а target файл резервной копии, это также может быть специальное устройство например /dev/stdout (для отправки резервной копии в STDOUT) или /dev/st для отправки на кассету.
В режиме востановления source это существующая резервная копия (или специальное устройство /dev/stdin,/dev/st), а target путь к БД (может включать имя сервера и\или альяс).
Все опции могут быть сокращены.
COMMON OPTIONS
-user username Пользователь для подключения к БД.
-ro[le] Роль подключения к БД
-pas[sword] password Пароль подключения к БД
-se[rvice] Использовать сервисный менеджер при работе с БД. (Позволяет работать с security2.fdb)
-v[erify] Выводить отчет о каждом действии.
-y path Перенаправлять сообщения в заданный путь.
-z Сообщить полную версию.
BACKUP OPTIONS
-b[ackup_database] Сделать резервную копию.
-co[nvert] Конвертировать внешние (external) таблицы в обычные. Без данной опции внешние таблицы игнорируются при резервном копировании.
-fa[ctor] blocking factor (древний параметр, использовавшийся при бэкапе на магнитные ленты)
-g[arbage_collect] не производить сборку мусора. Рекомендуемая опция.
-ig[nore] Игнорировать записи не прошедшие контрольную сумму. Эта опция должна использоваться только при поврежденной БД.
-l[imbo] Игнорировать транзакции в limbo. Изменения, произведенные незавершенными транзакциями двухфазного коммита, будут игнорироваться.
-m[etadata_only] Сохранять только метаданные.
-nt Использовать не переносимый формат файла. По умолчанию формат «переносимый». Под переносимостью понимается перенос с одной аппаратной платформы на другую (с разной последовательностью младших и старших байт в целых числах).
-ol[d_descriptions] Сохранять описания объектов в старом (InterBase 3.3) стиле.
RESTORE OPTIONS
-c[reate_database] Восстановить БД. Если файл БД существует, будет выдана ошибка.
-r[eplace_database] Восстановить БД, с перезаписью существующего файла БД. Начиная с Firebird 2.0 требуется указание или полного имени параметра (-replace_database), или параметра o[verwrite] (-r o).
-bu[ffers] num Установить размер кэша, который будет использовать сервер для этой БД (в этом случае опция конфига DefaultDbCachePages будет игнорироваться).
-e[xpand] Отключает компрессию RLE для строк.
-i[nactive] Не активировать индексы (все).
-k[ill] Не восстанавливать теневую копию.
-mo[de] access Востановить БД с заданным типом доступа. Возможные варианты read_only и read_write.
-n[o_validity] Восстанавливать БД без проверки constraints.
-o[ne_at_a_time] Делать commit после восстановления каждой таблицы.
-p[age_size] num Задать новый размер страницы. Возможные значения 1024, 2048, 4086, 8192, 16384. С Firebird 2.0 размеры страницы 1024 и 2048 игнорируются, база создается всегда с размером страницы не менее 4096 байт.
-use_[all_space] Не оставлять резервное место на страницах данных. Рекомендуется только для read_only баз данных.
Востановление многофайловой БД
многофайловые базы данных - атавизм, использовать не рекомендуется для Firebird 1.0 и выше.
При востановлении многофайловой БД target будет выглядеть так : file_1 pages_1 file_2 pages_2 … file_N-1 pages_N-1 file_N
Каждый pages_n показывает как много страниц будет помещенно в файл file_n. В последний файл (без указания размера) будут помещенный все страницы которые не поместились в файл file_N-1. Помните что pages_n измеряется в страницах, а не в байтах. и зависит от размера страницы.
Например вам надо разбить БД на куски по 2Гб. Если размер страницы 8192, то каждый файл может иметь максимум 2*1024*1024*1024/8192 = 262144 pages.
Переменные окружения
ISC_USER параметр по умолчанию для опции -user
ISC_ROLE параметр по умолчанию для опции -role
ISC_PASSWORD параметр по умолчанию для опции -password
Пример
gbak -b db-srv:/DATABASE.fdb /dev/stdout | gzip > /file.fbk.gz
zcat /file.fbk.gz | gbak -c /dev/stdin db-srv:/new-DATABASE.fdb
#!/bin/bash PATH=/opt/firebird/bin:${PATH} bkpath=/opt/acbase/backup curdate=`date +%F` echo `date` start backuping data gbak -B -G -user SYSDBA -pass sysdba localhost:employee $bkpath/emp_$curdate.fbk echo `date +%X` backup successfully echo `date +%X` compressing gzip $bkpath/emp_$curdate.fbk echo `date +%X` compress ok find $bkpath/emp_* -type f -mtime +4 -delete echo `date +%X` remove old file
См. также
Источник
man gbak
Обсуждение
Поправил многое. Собственно, полное описание gbak я сделал уже давно тут http://www.ibase.ru/devinfo/gbak.htm причем с комментариями, рекомендациями и т.п. Переносить всю статью сюда не вижу смысла.
Готовые скрипты автоматизации резервного копирования под Windows (.bat) и *nix (.sh): http://auto-backup-firebird.blogspot.ru/