shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Script para Backup


From: Rogério Tomassoni
Subject: Re: [shell-script] Script para Backup
Date: Mon, 26 Jul 2010 15:02:46 -0300
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4

Em 26/7/2010 14:28, marcus escreveu:
On Sunday 25 July 2010 10:06:00 you wrote:
Opa...obrigado pela dica na formulação do texto...

entendi sobre o rsync mas ainda nao foi o que perguntei

por exemplo

a pasta DADOS sera copiada toda sexta feira.

no diretorio backup ficara da seguinte forma

DADOS 25-07-2010

Na proxima sexta eu quero que a pasta DADOS 25-07-2010 continue no local e
que fique a proxima pasta fique la tambem ou seja

DADOS 27-07-2010
DADOS 02-08-2010

e isso que eu quero . que copie a novamente a pasta. portem a anterior
fique no mesmo local...mantendo meses de backup


Agradeço a ajuda

--- Em dom, 25/7/10, Kurt Kraut<address@hidden>  escreveu:

De: Kurt Kraut<address@hidden>
Assunto: Re: [shell-script] Script para Backup
Para: address@hidden
Data: Domingo, 25 de Julho de 2010, 10:35

Aloha Rodrigo,


Tive enorme dificuldade de entender o que você está falando. Eu sugiro que
você revise o encadeamento lógico do seu texto. Quanto mais inteligível
você for, mais chance tem de conseguir ajuda.

Do que entendi do teu cenário, você não está utilizando a melhor ferramenta
para a tarefa. Enquanto o comando 'cp' copia tudo no diretório de origem
para o diretório alvo, a ferramenta 'rsync' faz um trabalho mais refinado:
ela checa o que mudou na origem do backup e só copia para o alvo os
arquivos que mudaram. Isso irá reduzir o teu processo de backup de minutos
para poucos segundos. Diferença respeitável se você estiver movimentando
dados na casa dos gigabytes.

Portanto, sugiro que pesquise tutoriais do rsync.


Atenciosamente,


Kurt Kraut (address@hidden)

Em 24 de julho de 2010 23:08, Rodrigo Griffo
<address@hidden>escreveu:
Boa noite a todos.

Estou com a seguinte situaçao.

Tenho uma pasta em /home
/home/dados

Tenho uma outra partição que está ativa que tem o ponto de montagem
"backup"

Fiz um scritp para backup incremental simples

cp -rRu /home/dados /bacup

funciona blz....ele roda pelo cron 2x por dia e ta blz.

Agora vem a questao.

Que 1 backup semanal...mas na hora da copia a pasta anterior fique no
mesmo local ou seja....nao se apague.

Eu nao manjo de shell....entao to pedindo ajuda.

Agradeço

Eu tambem faria com rsync. Assim:

datahoje=`date`
mkdir dir-$datahoje
/usr/bin/rsync -av --progress --delete --password-file=/etc/rsyncd.secret
origem::compartilhamento  dir_$datahoje>  /tmp/rsync_.log

Abs!


Veja se isso ajuda

backup.sh

#!/bin/bash
#
# Script copiado do link http://www.dicas-l.com.br/dicas-l/20050723.php



  # Identificação dos arquivos
  IDENTIFICA=Backup

  # Numero de dias do ciclo de backup
  DIAS=2

  # E-mail do administrador
  ADMIN_EMAIL=""
  ADMIN_PANDION=""
  ADMIN_SMS=""

  # A partir de onde ficarão os arquivos
  PREFIX=/scripts

  # Onde os arquivos de backup e logs ficarão armazenados
  DIR_DESTINO=/hd500g/bkp_departamentos

  # Lista de arquivos a não serem backupeados
  EXCLUDE=$PREFIX/bkpIncremental/exclude.list

  # Arquivos temporário do script
  TEMP=/tmp/.backup.$$

  # Arquivos de controle do GNU/Tar
  INC=$PREFIX/bkpIncremental/incremental.conf

  # Formato da data
  DATA=$(date +%d-%m-%Y-%a)

  rm -rf $PREFIX/bkpIncremental/tempo.log
  # INICIO Calculo tempo gasto para backup
  DATA_LOG=`date +%a-%d-%m-%Y-%H:%M:%S`
  echo -ne "\nInicio: $DATA_LOG" >> $PREFIX/bkpIncremental/tempo.log
  # INICIO do script, calcula tempo.
  START=$(date +%s)

  # Arquivo com a lista de diretórios a serem backupeados
  LISTA=$(cat $PREFIX/bkpIncremental/list.conf | grep ^\/ | sort | uniq)

  # Arquivos gerado pelo script para controle de incremento
  CONFIG=$PREFIX/bkpIncremental/backup.conf

  VOLTA=0
  if [ ! -e $CONFIG ] ; then
         touch $CONFIG
         NUMERO=1
  else
         cp -f $CONFIG $CONFIG.bak
         LINHAS=$(cat $CONFIG | grep ^[0-9] | wc -l)
         [ $LINHAS -eq $((DIAS+1)) ] && VOLTA=1
         FIRST=$(cat $CONFIG | grep ^[0-9]- | head -1)
         LAST=$(cat $CONFIG | grep ^[0-9]- | tail -1)
         OLD=$(echo $LAST | cut -f1 -d"-")
         OLD=${OLD:-0}
         BACKUP_OLD=$(echo $FIRST | cut -f1 -d"-")
         FILE_OLD=$(echo $FIRST | cut -f- -d"-")
         if [ $OLD -eq $DIAS ] ; then
                 NUMERO=1
                 mv -f $INC $INC.bak
         else
                 NUMERO=$((OLD+1))
         fi
  fi

  DESTINO=$DIR_DESTINO/$IDENTIFICA-$NUMERO-$DATA

  SEND_MAIL () {

echo "Backup realizado arquivo: $DESTINO.tar.gz" | /usr/bin/mutt -s "Backup F: $(date +%d-%m-%Y)" $ADMIN_EMAIL
    echo "Backup:$DESTINO.tar.gz" | /usr/bin/mutt -s "BKP F:" $ADMIN_SMS
/usr/local/nagios/libexec/notify_via_jabber.pl $ADMIN_PANDION "Backup F: $(date +%d-%m-%Y) - Backup realizado arquivo: $DESTINO.tar.gz"

  }

  df -h > $DESTINO.log
tar --totals --ignore-failed-read --exclude-from=$EXCLUDE -zcvg $INC -f $DESTINO.tar.gz $LISTA >> $DESTINO.log 2>&1


  df -h >> $DESTINO.log
  SEND_MAIL $DESTINO.log

  echo $NUMERO-$DATA >> $CONFIG
  if [ $VOLTA -eq 1 ] ; then
         rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.tar.gz
         rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.log
         sed 1d $CONFIG > $TEMP
         mv -f $TEMP $CONFIG
  fi

  # FIM Calculo tempo gasto para backup
  DATA_LOG=`date +%a-%d-%m-%Y-%H:%M:%S`
  echo -ne "\nFim: $DATA_LOG" >> $PREFIX/bkpIncremental/tempo.log
  # FIM do script, calcula tempo.
  END=$(date +%s)
  DIFF=$(( $END - $START ))
echo -ne "\nTempo gasto em segundos: $DIFF" >> $PREFIX/bkpIncremental/tempo.log

exit

exclude.list
*.avi
*.AVI
*.bmp
*.BMP
*.dsc
*.DSC
*.exe
*.EXE
*.jpeg
*.JPEG
*.jpg
*.JPG
*.lnk
*.mp3
*.MP3
*.mpeg
*.MPEG
*.mpg
*.MPG
*.wav
*.WAV
*.wma
*.WMA
*.wmv
*.WMV

list.conf
/hd500g/departamentos




reply via email to

[Prev in Thread] Current Thread [Next in Thread]