我们使用 Firebird 2.5.*,并使用 gbak.exe 命令来备份和恢复数据库。
发生备份恢复的情况,用户选择了错误的文件从备份中恢复(例如 XML 文件) - gbak 中出现错误,但它损坏了数据库。
我在 Firebird/gbak 文档中没有找到用于检查备份完整性的参数(不执行恢复)。
我想知道是否有任何方法可以检查 Firebird 备份文件是否“有效”,而不需要实际恢复备份。使用 gbak.exe 命令检查备份的完整性,而无需恢复。
这样我们可以在继续恢复之前验证备份文件是否有效。
除了恢复之外,没有其他方法可以验证备份的有效性。但是,您描述的场景表明您使用了
-recreate_database overwrite
(或简称 -r o
)或 -replace_database
或 (-rep
) 选项,而不是 -create_database
(或 -c
)或 -recreate_database
(没有 overwrite
;或 -r
)选项。如果该名称下已存在数据库,则最后两个选项将失败。前两个选项将首先删除/删除现有数据库,然后才恢复它。
您遇到的情况在Firebird备份和恢复实用程序手册的恢复或重新创建部分中明确提到:
最后,如果恢复过程发现转储文件是 损坏,恢复将失败并且您以前工作的数据库 将永远消失。
(在这种情况下,不是 gbak 备份文件的文件与损坏的备份无法区分。)
建议的步骤是恢复到不同的文件名,然后在恢复成功完成后将其重命名为正确的文件名。