Backup incremental com montagem automática e e-mail
Publicado por Denilson Martins (última atualização em 06/08/2015)
[ Hits: 6.781 ]
Homepage: www.vivaolinux.com.br
Script para backup incremental de dados com montagem automática do dispositivo de armazenamento, com e-mail de status.
Para o envio do e-mail de status será necessário que tenha o programa Sendmail instalado.
Para a montagem automática deve-se obter o UUID do dispositivo de armazenamento e cadastrá-lo no fstab:
Execute o comando blkid, no retorno é possível obter o UUID do dispositivo e seu formato de partição, abaixo um exemplo com 3 HDs, onde o primeiro é para o sistema operacional e os demais para backup:
# blkid
/dev/sda1: UUID="d38642d1-34f9-43ae-b826-b8bae3f92bc9" TYPE="ext4"
/dev/sdb1: UUID="c8b0366c-d3fb-42f2-849f-d2b979e4ffbf" TYPE="ext4"
/dev/sdc1: UUID="3d090cf7-ba03-437a-b60e-7dd543c95d90" TYPE="ntfs"
Com o UUID em mãos, acrescente no fstab, no exemplo vou acrescentar o sdb1 e o sdc1 porém com o UUID sem estar entre aspas.
Caso algum dos HDs utilize USB a montagem automática por parte do sistema operacional não estará disponível, sendo que a montagem deverá ser feita manualmente. Para o script esta montagem já será realizada no própio.
# vim /etc/fstab
# HD1 - COMPARTILHAMENTOS
UUID=c8b0366c-d3fb-42f2-849f-d2b979e4ffbf /compartilhamentos ext4 0 2
# HD2 - BACKUP
UUID=3d090cf7-ba03-437a-b60e-7dd543c95d90 /backup ntfs 0 2
Depois de ter acrescido os HDs no fstab, reinicie o serviço udev:
# /etc/init.d/udev restart
Por fim, parametrize o script da maneira que for adequada e o execute.
#!/bin/bash
####################### FUNCOES #######################
backup(){
if [ -d $destino ]
then
umount $destino # Certifica que o destino esta desmontado
mount $destino # Realiza a montagem com base no fstab
executaBackup
else
mkdir $destino
echo "Diretorio $destino criado!"
umount $destino # Certifica que o destino esta desmontado
mount $destino # Realiza a montagem com base no fstab
executaBackup
fi
}
executaBackup(){
# Pega tamanho do dispositivo montado na particao destino
tam=$(df -h | grep $destino | awk '{print $2}' | sed "s/G//")
echo "Testando tamanho do disco montado em:"
echo "$destino --> Tamanho = $tamanho"
# Compara tamanho HD montado com o tamanho do HD Destino
if (( $tam == "$tamdest" ))
then
echo "Disco ok! Realizando backup!"
rsync -Cravzpt $origem $destino
# email enviado por parametros (email "parametro1" "parametro2")
email "Backup $origem Realizado!" "O backup dos dados foi realizado!"
else
echo "Disco errado! Backup nao sera realizado!"
email "Erro no Backup $origem!" "Verifique o Destino para Backup!"
fi
}
email(){
assunto=$1
mensagem=$2
sendEmail -f $emailOrigem -t $emailDest -u "$assunto" -m "$mensagem" -s $servidor:$porta -xu $emailOrigem -xp $senhaEmail
}
####################### VARIAVEIS #######################
# Variaveis para o backup
origem=/compartilhamentos # Origem do backup
destino=/backup-500 # Destino do backup
tamdest=466 # Tamanho Destino (Disco, Pendrive)
# Variaveis para email
servidor=smtp.mail.net # Servidor email
porta=587 # Porta servidor email
emailOrigem=mail@mail.net # Email Origem
senhaEmail=senha # Senha email origem
emailDest=outromail@outromail.net # Email Destino
backup
Limpeza dos dados do rConfig (ferramenta open-source de gerenciamento de configuração
sync_local - backup/restauração local
Backup dinâmico de banco de dados MySQL
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









