Rotina para backup diário, semanal e mensal (exemplo para Firebird)

Publicado por Marcos Giansante Bocca (última atualização em 17/12/2009)

[ Hits: 14.328 ]

Homepage: www.bocca.adm.br

Download bkfirebird.sh




Rotina para backup de banco de dados que mantém os arquivos dos últimos 7 dias, dos últimos 4 fins de semana e permanentemente do dia primeiro do mês utilizando o cron do Linux. Aqui adaptada para Firebird, utilizado pelo aplicativo Intsys.

  



Esconder código-fonte

#!/bin/sh
#begin of bkfirebird.sh
#Author: Marcos G. Bocca, 2009 http://marcos.bocca.adm.br
#Reproducao autorizada desde que mantida esta citacao de autoria
#Salve uma copia deste no diretorio de programas; crie os diretorios
# e acerte propriedades como por exemplo:
if false; then
  mkdir -p /opt/fbdata/backup/1diario
  mkdir    /opt/fbdata/backup/2mensal
  mkdir    /opt/fbdata/backup/2semanal
  mkdir    /opt/fbdata/backup/3mensal
  mkdir    /opt/fbdata/backup/9permanente
  rmdir /opt/fbdata/backup/2mensal
  ll /opt/fbdata/backup/
  chown -R firebird:firebird /opt/fbdata/backup/
  chmod -R 775 /opt/fbdata/backup/
  chown  firebird:firebird /usr/local/bin/bkfirebird.sh
  chmod  770 /usr/local/bin/bkfirebird.sh
  fi
#Sugestao de parametros (vide "man date" ou "date --help" para todos)
#%u   day of week (1..7); 1 is Monday
#%A   locale's full weekday name (e.g., Sunday)
#%U   week number of year, with Sunday as first day of week (00..53)

#Substitua os asteriscos pela senha do banco de dados e
#altere as 3 linhas abaixo conforme seu ambiente:
C="/opt/firebird/bin/gbak -B -USER SYSDBA -PAS ****** "
BKD="/opt/fbdata/backup/"
DBD="/opt/fbdata/"

if [ "$2" = "" ]; then
 echo use  $0 DataBaseFile Subdir_of_backup_dir [date_format_to_rename]
 echo ex.: $0 DOORS.GDB 1diario u
 echo "se terceiro parametro for igual a U (semana do ano), e' apagado arquivo U - 4)"
 echo "Author: Marcos G. Bocca, 2009 http://marcos.bocca.adm.br"
 echo "Reproducao autorizada desde que mantida esta citacao de autoria"
else
 # $1=db (ex: DOORS.GDB)  $2=subdir (ex: 1diario)
 echo backup at  $BKD$2/"$1"_$(date +%Y%m%d).gbak
 #touch $BKD$2/"$1"_$(date +%Y%m%d).gbak
 $C $DBD$1  $BKD$2/"$1"_$(date +%Y%m%d).gbak ;#log=$BKD$2/"$1"man.log full=y statistics="none"
 echo gzipping $BKD$2/"$1"_$(date +%Y%m%d).gbak
 gzip $BKD$2/"$1"_$(date +%Y%m%d).gbak
 if [ "$3" != "" ]; then
    echo moving $2/"$1"_$(date +%Y%m%d).gbak.gz to $BKD$2/"$1"_$(date +%"$3").gbak.gz
    mv        $BKD$2/"$1"_$(date +%Y%m%d).gbak.gz    $BKD$2/"$1"_$(date +%"$3").gbak.gz
    if [ "$3" = "U" ]; then
       rm $BKD$2/"$1"_`echo $(date +%"$3") - 4 | bc`.gbak.gz
       fi
    fi
 ls -lrt $BKD$2/
 fi

#Resultado esperado para comando ...
#bkfirebird.sh DOORS.GDB 1diario
#backup at /opt/bfdata/backup/1diario/DOORS.GDB_20091215.gbak
#gzipping /opt/bfdata/backup/1diario/DOORS.GDB_20091215.gbak
#total 5168
#-rw-r--r-- 1 root root 5279200 Dec 15 19:26 DOORS.GDB_20091215.gbak.gz

#Sugestao para cron:
#De segunda a sexta: bkfirebird.sh DOORS.GDB 1diario u
#Sabado:             bkfirebird.sh DOORS.GDB 2semanal U
#Todo dia 1 do mes:  bkfirebird.sh DOORS.GDB 3mensal
####end of bkfirebird.sh

Scripts recomendados

Gerenciamento de espaço em disco

Load Balance

Manutencao de arquivos no Squid-Cache

FTS

Atualização de horário


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts