[firebase-br] Gbak + Gfix com base de dados sendo acessada

Raphael Monteiro raphaelmonteiro em msn.com
Ter Dez 28 05:06:25 -03 2010


Prezados,

Preciso criar uma rotina de backup de duas bases de dados no memso servidor, 
utilizando o crontab.

Juntamente com um amigo, escrevi o seguinte script em shell para uma das bases:

####################

#!/bin/bash
#usuário do BD
login="SYSDBA"
# senha do usuário
senha="masterkey"
#caminho da sua base de dados
dir="/home/empresa1"
# data atual, dia, mês ano, do backup para ser concatenada no arquivo backup
data=`date +%d%b%y-%H%M` #neste exemplo, gera a data assim: 22Dez10-0244
# pasta + arquivo do BD
banco="$dir/BAR.GDB"
# pasta e arquivo de backup
backup="$dir/BACKUP/BAR/$data.gbk" #gera o arquivo de backup na pasta BAR com 
o nome = a data.
clear
# Imprime o nome do arquivo de backup
echo "Iniciando backup de $banco."
# Executa gfix para verificar a integridade
# executa o comando gfix para verificar a integridade do banco.
echo "Verificando a integridade dos dados..."
/usr/lib64/firebird/bin-superserver/gfix -v -f -user $login -password $senha 
$banco
echo "Integridade do base da dados $banco ok!"

echo "Validando os dados e eliminando fisicamente registros deletados..."
/usr/lib64/firebird/bin-superserver/gfix -sweep -user $login -password $senha 
$banco
echo "Validação ok!"
# Realiza o backup
# executa o gbak para fazer o backup e gera o nome do backup com o nome do 
banco + a data
echo "Realizando o Backup para o Arquivo: $backup ..."
/usr/lib64/firebird/bin-superserver/gbak -b -user $login -password $senha 
$banco $backup

#Compacta o Backup
echo "Compactando o Arquivo de Backup ..."
gzip -v $backup
echo "Arquivo compactado com sucesso!"
#usando o tar, nao deu certo, alem de que, o formato .GZ é requerido pelo 
fabricante do software. Alem de que, não precisei gerar uma rotina para apagar 
o backup original, sendo que o gzip ZIPA e apaga o original.

#Removendo arquivos antigos
echo "Removendo backups com mais de 30 dias"
find /home/empresa1/BACKUP/BAR/ -ctime +30 -exec rm -rf {} \;
echo "Backups antigos removidos com sucesso!"
echo "Backup realizado com sucesso!"

##############

A pergunta é se posso rodar esta rotina com os usuários conectados ao banco e 
se vocês tem alguma sugestão de utilizaçao para a rotina.

Atenciosamente, Raphael Monteiro





Mais detalhes sobre a lista de discussão lista