+ Responder ao Tópico



  1. #1

    Padrão Script para remover backups antigos automaticamente??

    Olá pessoal,

    Fiz um scrip de backup do meu banco de dados Firebird (.gbk.bz2).
    O Script está programado para rodar todos os dais às 4 da magruda e sempre que roda gera um arquivo com a nomeclatura: dadosYYYYMMDDHHMM (ex: dados200610110400.gbk.bz2). Eu quero agora gerar um script q apague os arquivos deste meu diretório de backup com data superiores a 30 dias... Ou seja quero manter apenas 30 dias de backup.
    Alguém poderia me dizer qual a melhor maneira de se fazer isto?? O script deveria fazer algo mais ou menos assim:
    1) Leia todos os arquivos do diretório (for arq in *) ???
    2) Pergunte um por um se sua extenção é .bz2 e se sua data de modificação é superior a 30 dias(find *.bz2 -mtime +30)
    3) Se for remova-o! (rm $arq)


    Agradeço se alguém puder me ajudar!
    Última edição por fhalves; 10-11-2006 às 18:21. Razão: Erro de digitação

  2. #2

    Padrão

    Código :
    # find . -name "*.bz2" -ctime +30 -exec rm {} \;

    Isso funciona bem pra mim =).

  3. #3

    Padrão

    Kra eu fiz um onde vc pode tratar o bkp a cada dia, talvez te ajude:

    # Armazena a dados do sistema
    DATA=`date +%d/%m/%Y`
    DATARQ=`date +%d%m%Y`
    HORA=`date +%H:%M:%S`
    DIA=`date +%u`
    SEM=`date +%a`

    # Indica o nome do arquivo depois de compactado e o local a fazer bkp
    DEST="cd /bkp"
    BKP="tar zcfv"
    NOME="$SEM$DATARQ.tar.gz"
    LOCAL="/sites /home /var /scripts"

    # Loga
    MENS="echo Backup CRIADO EM /bkp NO DIA $DATA AS $HORA"
    LOCLOG="/var/log/bkp.log"

    # Verifica o dia da semana, exclui o bkp da semana passada,
    if [ "$DIA" = 1 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 2 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 3 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 4 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 5 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 6 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    if [ "$DIA" = 7 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    fi #fim domingo
    fi #fim sabado
    fi #fim sexta
    fi #fim quinta
    fi #fim quarta
    fi #fim terca
    fi #fim segunda

    Ai nesse caso basta vc acrescentar dentro dos ifs o q vc quer que ele faça, dessa maneira se vc por exemplo, colocar dentro de cada dia pra ele remover o arquivo criado naquele dia ai vc tera um bkp de uma semana, vc pode editar tb e organizar para a remoção mensal... ai fica de acordo com sua criatividade... + a ideia ta ai eu uso ele pra bkps de uma semana....

    Valews!

  4. #4
    fabricio_
    Visitante

    Padrão

    Citação Postado originalmente por tuxson Ver Post
    Kra eu fiz um onde vc pode tratar o bkp a cada dia, talvez te ajude:

    # Armazena a dados do sistema
    DATA=`date +%d/%m/%Y`
    DATARQ=`date +%d%m%Y`
    HORA=`date +%H:%M:%S`
    DIA=`date +%u`
    SEM=`date +%a`

    # Indica o nome do arquivo depois de compactado e o local a fazer bkp
    DEST="cd /bkp"
    BKP="tar zcfv"
    NOME="$SEM$DATARQ.tar.gz"
    LOCAL="/sites /home /var /scripts"

    # Loga
    MENS="echo Backup CRIADO EM /bkp NO DIA $DATA AS $HORA"
    LOCLOG="/var/log/bkp.log"

    # Verifica o dia da semana, exclui o bkp da semana passada,
    if [ "$DIA" = 1 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 2 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 3 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 4 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 5 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    else
    if [ "$DIA" = 6 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    if [ "$DIA" = 7 ]; then
    $DEST
    #cria o bkp do dia e loga
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG
    fi #fim domingo
    fi #fim sabado
    fi #fim sexta
    fi #fim quinta
    fi #fim quarta
    fi #fim terca
    fi #fim segunda

    Ai nesse caso basta vc acrescentar dentro dos ifs o q vc quer que ele faça, dessa maneira se vc por exemplo, colocar dentro de cada dia pra ele remover o arquivo criado naquele dia ai vc tera um bkp de uma semana, vc pode editar tb e organizar para a remoção mensal... ai fica de acordo com sua criatividade... + a ideia ta ai eu uso ele pra bkps de uma semana....

    Valews!
    acho que esse seu monte de ifs podem ser resumidos a um unico case

    Código :
     
    case $DIA in
       1) ;;
       2) ;;
       3) ;;
       4) ;;
       5) ;;
       6) ;;
       7) ;;
    esac
     
    $DEST
    $BKP $NOME $LOCAL
    $MENS >> $LOCLOG

    e outra coisa , eu acho mais interessante definir variaveis assim

    ao inves de ser
    DEST="cd /bkp" DEST=/bkp
    cd ${DEST}
    BKP="tar zcfv" TAR="tar zcfv"


    bom , é só minha opinião . isso ajuda qndo o código ficar muito grande

  5. #5

    Padrão

    kra realmente ficou melhor eu nem preocupei em melhora-lo pois para minha necessidade ele funcionaou... + vou procurar atualiza-lo...

    Valews!