Backup bases de dados Firebird com envio via FTP e local
Publicado por Tacio de Jesus Andrade (última atualização em 08/07/2011)
[ Hits: 9.419 ]
Homepage: www.multiti.com.br
Este script foi criado por mim para resolver um grande problema, a criação de backups dos bancos de dados de uma das empresas onde estou prestando consultoria e serviços na área de informática.
Nela era necessário alem do backup normal, feito da base para outra maquina na rede ou para outro HD, fazer o backup em uma maquina remota fora da empresa, para maior segurança contra danos causados ao servidor ou até mesmo a todo o prédio.
Para resolver este problema, decidi fazer uma locação de um servidor web com um preço acessível (Hotel da Web) e fazer o backup do banco de dados em uma pasta do servidor por ftp (no meu caso preferi colocar em uma pasta protegida com senha (por um .htaccess), porem você pode optar por utilizar uma pasta acessível apenas por ftp).
Espero que este script ajude muitas pessoas que tenham algum problema parecido com o meu (ou não) e quem conseguir melhora-lo, por favor poste novamente ou me passe o link para melhorar o que está já em produção.
#!/bin/bash ################################################################################## # Autor: Tácio de Jesus Andrade # # Data de criação: 20/06/2011 # # Ultima modificação: 26/06/20 # # Função: Fazer o backup de bases de dados Firebird # # Como usar: Jogue este script na pasta "/sbin" e após isso adicione no crontab: # # 01 0 * * * /sbin/backupFirebird.sh # # Pré requisitos: Ter o Firebird, lftp, 7Zip e sendEmail, instalado no servidor, # # ou desativar no script o que não quiser utilizar. # ################################################################################## # Variaveis do usuario e senha do firebird user=SYSDBA password=masterkey # Variaveis para envio do log por e-mail (pré configurado para envio no Gmail) emailServidor="@gmail.com" senhaEmailServidor="" smtp="smtp.gmail.com:587" emailAdmin="" # Variaveis das pastas de backup e tempo de duração do mesmo tempoArquivamentoBackup=26 arquivoTemporario=/root/arquivosPresentes.txt pastaDosBancosDeDados=/home/firebird/cpc/ pastaBackupLocal=/home/servidor/backupBancosDeDados/ backupAtual=backup_$(date +%Y-%m-%d).7z arquivoDeLog=/var/log/backupFirebird.log # Dados do servidor FTP HOST_FTP="ftp.seu.dominio.com" USUARIO_FTP="usuario" SENHA_FTP="senha" PASTA_BACKUP_FTP=public_html/arquivos/ # Lista de todos os arquivos de backup presentes atualmente na pasta de backups ls -1 $pastaBackupLocal | sort > $arquivoTemporario # Verifica quantos backups tem, caso tenha mais de $tempoArquivamentoBackup, pega o nome do ultimo if [ `cat $arquivoTemporario | wc -l` -gt $tempoArquivamentoBackup ] then backupAntigo=`cat $arquivoTemporario | head -n1` else backupAntigo="" fi # Deleta o arquivo temporario com o nome dos arquivos de backup rm $arquivoTemporario # Acesso a pasta onde se encontra o .gdb ou .fdb cd $pastaDosBancosDeDados echo "Backup de `date +%Y-%m-%d` sendo iniciado" > $arquivoDeLog # Comando que faz a criacao do backup dos bancos de dados for i in * ; do echo "Backup do banco de dados `echo $i` iniciado, pausado o banco as `date +%c`" >> $arquivoDeLog # Para o acesso ao banco de dados gfix -shut -force 0 -user $user -password $password $i >> $arquivoDeLog # Otimiza a base de dados gfix -sweep -user $user -password $password $i >> $arquivoDeLog # Corrige os erros da base de dados se existirem gfix -mend -full -user $user -password $password $i >> $arquivoDeLog # Faz o backup da base gbak -backup -ignore -user $user -pas $password $i backup/`echo $i`.gbk >> $arquivoDeLog #Reinicia o acesso a base de dados gfix -online -user $user -password $password $i >> $arquivoDeLog echo "Backup do banco de dados `echo $i` concretizado com sucesso e banco de dados reativado as `date +%c`" >> $arquivoDeLog done # Compacta o backup feito e oculta os arquivos e indices de compressão 7zr a $backupAtual backup/* >> $arquivoDeLog # Testa se o arquivo está corrompido, se tiver ele compacta novamente o backup if [ -n `7zr -t $backupAtual | grep "Everything is OK"` ] then echo "O backup anterior está corrompido, criando novo backup" >> $arquivoDeLog 7zr a $backupAtual backup/* >> $arquivoDeLog fi # Deleta os arquivos de backup depois de compactados e testado rm /home/firebird/cpc/backup/* # Envia backup para maquina na rede cp $backupAtual $pastaBackupLocal # Vefica se existe ou não backup para ser deletado if [ $backupAntigo -eq "" ] then # Acessa o FTP e envia o arquivo de backup compactado echo "Inicio do envio do backup por FTP iniciado as `date +%c`" >> $arquivoDeLog lftp <<FTP open $HOST_FTP user $USUARIO_FTP $SENHA_FTP>/dev/null cd $PASTA_BACKUP_FTP put $backupAtual bye FTP echo "Fim do envio do backup por FTP as `date +%c`" >> $arquivoDeLog # Caso exista um backup antigo a ser removido ele remove o arquivo do ftp e do disco else lftp <<FTP open $HOST_FTP user $USUARIO_FTP $SENHA_FTP>/dev/null cd $PASTA_BACKUP_FTP rm $backupAntigo put $backupAtual bye FTP echo "Fim do envio do backup por FTP as `date +%c`" >> $arquivoDeLog # Deleta o backup antigo do HD rm $pastaBackupLocal$backupAntigo 2> /dev/null echo "Arquivo `echo $backupAntigo` foi removido!" fi # Deleta o backup do dia depois de envia-lo via ftp rm /home/firebird/cpc/$backupAtual echo "Backup finalizado!" >> $arquivoDeLog # Envia um e-mail avisando do sucesso do backup sendEmail -f $emailServidor -t $emailAdmin -u "Backup `date +%Y-%m-%d`" -m "Backup do dia `date +%Y-%m-%d` feito e log em anexo" -a $arquivoDeLog -s $smtp -xu $emailServidor -xp $senhaEmailServidor > /dev/null ################# Para recuperar o banco de dados ################# #for i in * ; do # Faz o backup da base # gbak-1.5 -create -v $i $i.GDB #done
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - EXCLUINDO USUÁRIO COM USO=0
Instalando Nagios 4.0.8 - Debian 7
Nenhum comentário foi encontrado.
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Como fzr Downgrade em um pacote específico (1)
Contas online no POP OS 24.04 ? (2)
problema para barrar sites/downloas via HTTPS. (2)