Enviado em 17/11/2017 - 11:16h
Olá,
#!/bin/bash
#
#backupRaspberryPi.sh: Monta um compartilhamento NFS do servidor de arquivos da RGA através de uma VPN e realiza o
#backup completo dos dados em uma unidade acoplada ao mini-pc.
#Versão: 2.0
#-----------------XXX-------------------
#Variáveis
ipServidor=10.8.0.1
dispositivoHdLocal=/dev/sda1
pastaLocal=/backup
pastaLocalDados=/backup/dados
pastaLocalVms=/backup/vms
compartilhamentoDados=/sinc/dados
compartilhamentoVms=/sinc/virtual
pontoMontagemDados=/mnt/servidordados
pontoMontagemVms=/mnt/servidorvms
excluirPasta=emails
dataAtual=`date +%d-%m-%Y/%H:%M`
email=teste@gmail.com
servidorInternet=google.com
tunelVPN=tun0
dirBase=$(dirname "$0")
log=$dirBase/backup.log
msg_ok=$dirBase/ok.txt
msg_erro=$dirBase/erro.txt
backup=0
#Função para testar a existencia do arquivo de log e criar um se necessário.
function testarLog() {
arquivoLog=$1
if [ -e $arquivoLog ]; then
echo "Arquivo de log existente..." > $arquivoLog
else
touch $arquivoLog > /dev/null
echo "Arquivo de log criado." >> $arquivoLog
fi
}
#Funcao para testar a conectividade com a internet
function testarInternet() {
servidor=$1
if ping -c 5 $servidor > /dev/null; then
echo "Conectado a internet..." >> $log
backup=$(($backup + 1))
else
echo "Sem conexao a internet." >> $log
fi
}
#Funcao para testar a conectividade da VPN
function testarVPN() {
tunel=$1
ip=$2
if ifconfig $tunel >> /dev/null; then
echo "Conectado a VPN..." >> $log
if ping -c 5 $ip > /dev/null; then
echo "Conectado ao servidor..." >> $log
backup=$(($backup + 1))
else
echo "Sem comunicao com o servidor de arquivos." >> $log
fi
else
echo "Conexao VPN não estabelecida." >> $log
fi
}
#Funcao para montar a pasta de backup local
function montarCompartilhamentoLocal() {
dispositivo=$1
pasta=$2
if [ -d $pasta ] >> /dev/null; then
echo "Utilizando pasta local existente..." >> $log
else
echo "Criando pasta local..." >> $log
mkdir $pasta >> /dev/null
fi
if mount $dispositivo $pasta >> /dev/null; then
echo "Pasta local "$pasta" montada..." >> $log
backup=$(($backup + 1))
else
if df -h | grep /backup >> /dev/null; then
echo "Pasta local "$pasta" já montada." >> $log
backup=$(($backup + 1))
else
echo "Pasta local "$pasta" não pode ser montada." >> $log
fi
fi
}
#Funcao para montar o compartilhamento do servidor remoto
function montarCompartilhamentoRemoto() {
ip=$1
compartilhamento=$2
pontoMontagem=$3
if mount -t nfs $ip:$compartilhamento $pontoMontagem >> /dev/null; then
echo "Compartilhamento remoto "$compartilhamento" montado em "$pontoMontagem >> $log
backup=$(($backup + 1))
else
if df -h | grep $pontoMontagem >> /dev/null; then
echo "Compartilhamento remoto "$compartilhamento" já montado em "$pontoMontagem >> $log
backup=$(($backup + 1))
else
echo "Compartilhamento remoto "$compartilhamento" não pode ser montado em "$pontoMontagem >> $log
fi
fi
}
#Funcao para copiar os dados do servidor remoto
function realizarBackup() {
pontoMontagem=$1
pastaBackup=$2
excluir=$3
if df -h | grep $pontoMontagem >> /dev/null; then
echo "Realizando copia de arquivos de "$pontoMontagem":" >> $log
if rsync -avu --exclude $excluir --delete $pontoMontagem/ $pastaBackup >> $log; then
backup=$(($backup + 1))
echo "Cópia de arquivos de "$pontoMontagem" realizada com sucesso!" >> $log
else
echo "Cópia de arquivos de "$pontoMontagem" com falha. Verifique o arquivo de log" >> $log
fi
else
"Algo errado aconteceu, Verifique os logs" >> $log
fi
}
#funcao para enviar o email com o log.
function enviarEmail() {
emailDestino=$1
if [ $backup -eq 7 ]; then
mutt -s "Servidor de backup - Sucesso" -a $log -- $email < $msg_ok >> /dev/null
else
mutt -s "Servidor de backup - Erro" -a $log -- $email < $msg_erro >> /dev/null
fi
}
testarLog $log
echo $dataAtual >> $log
testarInternet $servidorInternet
if [ $backup -eq 1 ]; then
testarVPN $tunelVPN $ipServidor
else
echo "Script encerrado por falta de conexao a internet." >> $log
exit
fi
if [ $backup -eq 2 ]; then
montarCompartilhamentoLocal $dispositivoHdLocal $pastaLocal
else
echo "Script encerrado por falta de conexao a VPN ou ao servidor." >> $log
enviarEmail $email
exit
fi
if [ $backup -eq 3 ]; then
montarCompartilhamentoRemoto $ipServidor $compartilhamentoDados $pontoMontagemDados
montarCompartilhamentoRemoto $ipServidor $compartilhamentoVms $pontoMontagemVms
else
echo "Script encerrado por não conseguir montar a pasta local." >> $log
enviarEmail $email
exit
fi
if [ $backup -ge 5 ]; then
echo " " >> $log
realizarBackup $pontoMontagemDados $pastaLocalDados $excluirPasta
echo " " >> $log
# realizarBackup $pontoMontagemVms $pastaLocalVms
# echo " " >> $log
else
echo "Script encerrado por não conseguir montar as pastas remotas" >> $log
enviarEmail $email
exit
fi
echo "Hora de termino do backup:" >> $log
date +%H:%M >> $log
echo "--------xXx--------" >> $log
df -h >> $log
umount $pastaLocal >> /dev/null
umount $pontoMontagemDados >> /dev/null
umount $pontoMontagemVms >> /dev/null
enviarEmail $email
exit
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Alguém pode me ajudar porfavor como executar comandos ao iniciar no i3... (2)
Debian Bookworm para a versão beta Debian 13 Trixie (2)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (21)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba