[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
Re: Script para Backup, Sérgio, 2010/07/26