如何backup/restore一个Firebird数据库?

How to backup/restore a Firebird database?

我对 Firebird v2.5 backup/restore 过程真的很困惑。我应该如何使用 backup/restore 本地 Firebird 数据库: fbsvcmgr.exegbak.exeisql.exenbackup.exe

这些都是选项还是我错了!

C++ 应用程序的实用方法是什么?

我第一次应该如何知道数据库是否已经存在,以便我决定是否恢复它。

我一般用gbak(不知道其他的)。

备份

gbak -b -v -user SYSDBA -password "masterkey" D:\database.FDB E:\database.fbk

恢复

gbak -c -user SYSDBA -password masterkey E:\database.fbk E:\database_restore.fdb

如果要还原的文件存在,您可以使用 gbak 还原标志来完成 -c = 创建新文件 -r = 替换文件

这是适合 FB backup/restore 的好页面:http://www.destructor.de/firebird/gbak.htm

在 Firebird 中创建备份的主要方法有两种:

  • gbak,创建数据库(对象'descriptions'(例如table结构、视图等)和数据)的逻辑备份
  • nbackup(也称为nbak),创建数据库的物理备份(自上次nbackup以来物理数据页发生变化)

在大多数情况下,我建议使用 gbak,因为它更简单并且还允许您在平台和 Firebird 版本之间移动备份,而 nbackup 仅对相同平台和 Firebird 版本真正 suitable(但具有允许增量备份的优点)。

ISQL 是交互式查询 CLI,不能用于创建备份。 Fbsvcmgr 是“Firebird 服务管理器”工具,可用于调用(远程)Firebird 服务器上的服务操作。这包括通过 gbaknbackup 进行的备份和恢复操作。 Fbsvcmgr 非常低级且难以使用(选项见 fbsvcmgr -?)。

对于 gbak,您通常会通过 gbak executable(选项 -se[rvice] <service>),另请参阅 nbackup 文档中的 Remote Backups & Restores in the gbak documentation. For nbackup you either can use the nbackup tool locally, or you need to use the fbsvcmgr (or another tool that supports service operations) to invoke the same functionality remotely (action_nbak and action_nrest), see also Backups on remote machines (Firebird 2.5+)

有关 gbak 的详细说明,请参阅 gbak - Firebird Backup & Restore Utility. For nbackup, see Firebird's nbackup tool

使用 gbak 备份,您通常会使用 'create'(选项 -c[reate])或 'recreate'(-r[ecreate] without o[verwrite] 选项),如果数据库文件已经存在,这将失败。另请参阅上面链接的 gbak 手册以获取更多信息。

我不会真正回答您有关如何从 C++ 应用程序执行此操作的问题,因为我不编写 C++ 程序,而且您的问题已经太宽泛了。但是要知道可以从 C++ 代码调用 Firebird 服务操作,包括使用 gbaknbackup 的备份和恢复(本质上就是Firebird 工具本身就可以)。如果您想了解更多,我建议您在 firebird-support Google Group.

上提问