Estamos usando Firebird 2.5.* e usamos o comando gbak.exe para fazer backup e restaurar os bancos de dados.
Ocorreu um caso de restauração de backup, onde o usuário selecionou um arquivo incorreto para restaurar do backup (um arquivo XML, por exemplo) - ocorreu um erro no gbak, mas corrompeu o banco de dados.
Não encontrei na documentação do Firebird/gbak um parâmetro para verificar a integridade do backup (sem realizar a restauração).
Gostaria de saber se existe alguma forma de verificar se o arquivo de backup do Firebird "é válido", sem realmente restaurar o backup. Use o comando gbak.exe para verificar a integridade do backup, sem precisar restaurá-lo.
Desta forma podemos validar se o arquivo de backup é válido, antes de prosseguir com a restauração.
Não há nenhuma maneira de verificar a validade de um backup, a não ser restaurando. No entanto, o cenário que você descreve sugere que você usou a opção
-recreate_database overwrite
(ou-r o
abreviadamente) ou-replace_database
ou (-rep
), em vez das opções-create_database
(ou-c
) ou-recreate_database
(semoverwrite
; ou-r
). Estas duas últimas opções falharão se já existir um banco de dados com o nome. As duas primeiras opções irão primeiro eliminar/excluir o banco de dados existente e só então restaurá-lo.O cenário com o qual você foi confrontado é explicitamente mencionado na seção Restore Or Recreate do manual do Firebird Backup & Restore Utility :
(Neste contexto, um arquivo que não seja um arquivo de backup gbak é indistinguível de um backup corrompido.)
O procedimento recomendado é restaurar para um nome de arquivo diferente e, em seguida, renomeá-lo para o nome de arquivo correto após a restauração ser concluída com êxito.