我们使用 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备份文件的文件与损坏的备份无法区分。)
建议的过程是恢复到不同的文件名,然后在恢复成功完成后将其重命名为正确的文件名。