Script de Backup Domestico Com Rsync
Galera nesse artigo vamos ver um script de backup básico porem muito funcional, ideal para ambiente domestico e pequena empresa utilizando o rsync. Em breve vou estar postando um artigo sobre o Bacula que é uma ferramenta de backup profissional e bastante robusta, mas vamos ao que interessa.... Pressupondo que você tenha uma máquina com o samba rodando, ou ate mesmo uma máquina onde você simplesmente salva seus arquivos vamos em frente. Iremos precisar de um segundo HD na máquina para servir de backup.
Vamos nos basear que o HD principal é o /dev/sda e o secundário é o /dev/sdb, verifique em seu sistema quais são os dispositivos com o comando “fdisk -l”, se você não formatou o HD e ele não possui nenhuma partição criada formate-o com o comando “cfdisk /dev/sdb”, primeiro iremos criar o diretório onde será o ponto de montagem de nosso HD:
# mkdir /mnt/backup-diferencial
Agora vamos fazer um teste e montar a unidade para ver se esta tudo numa boa.
# mount /dev/sdb1 /mnt/backup-diferencial
Verifique com o comando abaixo se o HD foi montado com sucesso:
# df –h
A saída devera ser mais ou menos assim:
Sist. Arq. Size Used Avail Use% Montado em
/dev/sdb1 0,0G 0 0,0G 0% /mnt/backup-diferencial
Depois crie a pasta de log dos backup:
# mkdir /mnt/backup-diferencial/logs
Com tudo funcionando vamos configurar para nosso hd ser montado automaticamente durante o boot, adicione a seguinte linha ao final no arquivo /etc/fstab:
/dev/sdb1 /mnt/backup-diferencial ext3 defaults,user,auto 0 0
Depois disso é só reiniciar a máquina para ver se o HD foi montado. Se tudo estiver certo vamos proseguir.
Agora vamos começar configuração, primeiramente instale o rsync:
# apt-get install rsync
Depois crie o diretório onde irá ficar os arquivos de configurações
# mkdir /etc/backup
Agora precisamos criar o arquivo dir2bkp e adicionar todos os diretório que queremos fazer backup.
# pico /etc/backup/dir2bkp
/etc
/arquivos
/var/profiles
Etc... adicione os diretórios de acordo com sua necessidade
Crie o arquivo que terá as informações do ultimo backup.
# touch /etc/backup/bkp-ultimo
Agora iremos criar o script de backup
# pico /etc/backup/backup.sh
Adicione as seguintes linhas no mesmo:
# Caminho onde este script foi instalado
MY_PATH=\"/etc/backup\"
AGORA=`date +%d-%m-%Y-%H:%M:%S`
# Caminho onde este script foi instalado
MY_PATH=\"/etc/backup\"
AGORA=`date +%d-%m-%Y-%H:%M:%S`
ULTIMOFILE=\"$MY_PATH/bkp-ultimo\"
DIR2BKP=\"$MY_PATH/dir2bkp\"
AGORAESTATICO=\"$AGORA\"
LOGBACKUP=\"/mnt/backup-diferencial/logs/\"$AGORAESTATICO\".txt\"
EMAIL=\"/etc/backup/email.sh\"
PATH_DESTINO=\"/mnt/backup-diferencial\"
# Se o diretorio de destino nao existir, entao o backup nao sera feito
if [ ! -d $PATH_DESTINO ]
then
exit 0
fi
ULTIMO=`cat $MY_PATH/bkp-ultimo`
mkdir -p $PATH_DESTINO/$AGORAESTATICO
for DIRS in `cat $DIR2BKP`
do
rsync -av -R --delete --delete-excluded --link-dest=$PATH_DESTINO/$ULTIMO $DIRS $PATH_DESTINO/$AGORAESTATICO >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"--------------------------------------------------\" >> $LOGBACKUP
done
echo \"\" >> $LOGBACKUP
echo \"Tamanho dos Backups ja Realizados\" >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
du -hs /mnt/backup-diferencial/* >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"--------------------------------------------------\" >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"Espaco Disponivel no HD\" >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
df -h >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"--------------------------------------------------\" >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"Backup Criado Com Sucesso\" >> $LOGBACKUP
echo \"\" >> $LOGBACKUP
echo \"--------------------------------------------------\" >> $LOGBACKUP
echo $AGORAESTATICO > $ULTIMOFILE
$EMAIL \"Relatorio de Backup do Dia \"$AGORAESTATICO\"\" \"\" $LOGBACKUP
Salve o arquivo e de permissão de execução ao mesmo
# chmod 755 backup.sh
Agora iremos criar o script de email para nos enviar os logs
# pico /etc/backup/email.sh
#!/bin/bash
EMAIL_FROM=\"email_de_origem \" # usuario de email que se autentica no servidor SMTP
EMAIL_TO=\"email_de_destino\" # usuario que receber. os emails
#Servidor SMTP e porta utilizada
SERVIDOR_SMTP=\"smtp.seu_dominio:25\" #endere.o no servidor SMTP, observar no exemplo o yahoo utiliza a porta 587
SENHA=senha_do_email_de_origem #informe aqui a senha de autentica..o no servidor SMTP
ASSUNTO=\"$HOSTNAME - $1\"
MENSAGEM=$2
if [ \"$1\" == \"\" ] ;then
ASSUNTO=\"SEM ASSUNTO\"
fi
if [ \"$2\" == \"\" ] ;then
MENSAGEM=\"SEM MENSAGEM\"
fi
if [ \"$3\" != \"\" ] ;then
MENSAGEM=\"$2 `cat $3`\"
fi
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u \"$ASSUNTO\" -m \"$MENSAGEM\" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
Salve o arquivo e de permissão de execução ao mesmo
# chmod 755 email.sh
Instale o cliente de email:
# aptitude install sendemail
Pronto feito isso é só executar o script de backup para criar o primeiro backup full, provavelmente não iremos receber o primeiro email com os logs pois como se trata do primeiro backup o log fica muito grande e existe um limite para enviar os logs por email, mas a partir do segundo já começamos a receber normalmente.
# /etc/backup/backup.sh
Podemos automatizar esse processo inserindo a linha a baixo no final do arquivo /etc/crontab
00 20 * * * root /etc/backup/backup.sh
Dessa forma o backup será realizado todos os dias as 20:00 horas.
Reinicie o cron
# /etc/init.d/cron restart
Esse pequeno script cria uma política de backup diferencial , um backup diferencial fornece um backup dos arquivos que foram alterados desde que foi realizado um backup completo, ele salva os arquivos que são diferentes ou um novo desde o último backup completo.
Bem pessoal é isso ae, espero que seja útil para todos, até a próxima!!!....... :)
backup doméstico com Rsync
- Detalhes
- Escrito por Administrator
- Categoria: Linux
- Acessos: 4283