Backup via rsync

Iniciado por cesgomes, 18 de Novembro de 2010, 16:54

tópico anterior - próximo tópico

cesgomes

Fala galera!

montei um script para efetuar o backup do meu /home direto para meu HD Externo. Este backup é incremental, e é feito para cada dia da semana, ou seja, na segunda-feira há um backup, na terça outro e assim por diante. Fiquem a vontade para utilizá-lo e alterá-lo. Só peço que mantenham os créditos.

Primeiramente criei um diretório chamado script e nele um arquivo, que o nomeei de rsync com o seguinte código:

#!/bin/sh
#Rotina simples para backup do diretório pessoal
#Criado em 15.11.2010 por Carlos Eduardo Gomes.

#Diretório que irá efetuar o backup
SOURCE='/home/carlos'

#Mídia do backup
MEDIA='/media/BKP'

#Diretório do backup
DATE='Syncronizer/'`date +%A`
DESTINATION=$MEDIA/$DATE

#Valida se a mídia está pronta (montada)
if [ -d "$MEDIA" ]; then
#Do nothing
DESTINATION=$MEDIA/$DATE
else
echo "Backup não pronto"
exit 1
fi

#Valida se o diretório existe.
if [ -d "$DESTINATION" ]
then
#Do nothing
DESTINATION=$MEDIA/$DATE
else
mkdir $DESTINATION
fi

rsync -rtpvs --progress --delete $SOURCE $DESTINATION


Após gerar este arquivo e alterar as permissões dele (sudo chmod 755 ~/scripts/rsync), é necessário colocar no cron, para efetuar o backup automagicamente. O meu crontab está assim:
0 2 * * * /home/carlos/scripts/rsync >> /home/carlos/scripts/log/rsync.log

Detalhes:

  • /home/carlos é o meu diretório pessoal, alterem para o caminho do teu diretório ou para onde quiserem.
  • caso queiram, para deixar mais elegante, ao invés de criar o diretório scripts, utilizem o .scripts, assim ele ficará oculto no Nautilus.
  • não há necessidade de gerar o log no cron (>> /home/carlos/scripts/log/rsync.log).

Notebook Compaq - Processador Intel Pentium Dual Core T3200
HD 160Gb 5400RPM (SATA)
2Gb RAM 667Mhz DDR2

zeroday

Olá Carlos ,

Muito bom seu script.

Só não entendi como funciona estes dias da semana.

Até mais
"Lutar sempre , vencer na medida do possível , desistir jamais."

cesgomes

Citação de: zeroday online 19 de Novembro de 2010, 17:17
Olá Carlos ,

Muito bom seu script.

Só não entendi como funciona estes dias da semana.

Até mais

Zeroday, com a função 'date +%A', eu obtenho o dia da semana atual, onde irá ser feito o backup incremental, assim, o backup da segunda-feira será feito no diretório 'segunda', o backup a ser efetuado na terça-feira será armazenado no diretório 'terça' e assim por diante.

Para quem tem dados vitais, pode-se acrescer ao script mais duas variáveis: uma para 'date +%B' e outra para 'date +%Y'. e repete-se o rsync para estas variáveis. Assim terá o backup mensal e anual.

Seria algo como:


MONTH='Syncronyzer'´date +%B´
YEAR='Syncronyzer'´date +%Y´

DESTINATION1=$MEDIA/$MONTH
DESTINATION2=$MEDIA/$YEAR


rsync -rtpvs --progress --delete $SOURCE $DESTINATION1
rsync -rtpvs --progress --delete $SOURCE $DESTINATION2


Espero que eu tenha conseguido explicar melhor.

[z]!
Notebook Compaq - Processador Intel Pentium Dual Core T3200
HD 160Gb 5400RPM (SATA)
2Gb RAM 667Mhz DDR2

zeroday

Perfeito Carlos ,

Não tinha entendido que os backups iam para diretórios diferentes. Mas agora entendi.

Até mais

"Lutar sempre , vencer na medida do possível , desistir jamais."