Automatização de backup

Este artigo mostra como automatizar os backup de seus servidores, aqui vou abordar uma situação onde você precisa manter seus backups atualizados e não poderá em horários que não está na empresa. Para isso utilizaremos scripts e agendamentos. Aqui no Viva o Linux isso não é novidade, mas fiz este bem detalhado. Então mãos à obra!

[ Hits: 7.529 ]

Por: Paulo José Maestrello em 06/10/2016


Os scripts



No gumball vai este:

#!/bin/bash
#
#BACKUP E COPIA DE ARQUIVO PARA 3 Locais
#gumball.sh
#Criado em 23/08/2016
#por Paulo J. Maestrello
#
## algumas variaveis encontradas aqui, não são utilizadas neste script, mas as tenho sempre como cabeçalho, pois em outros processos uso, e gostaria que voces ##também tivessem elas.
##Variaveis Globais
AGORA=$(date +%A"  "%d/%m/%Y-%HH:%MM"  "%:z%Z)
HOJE=$(date +%d%m%Y)
ONTEM=$(date -d 'yesterday' '+%d%m%Y')
AMANHA=$(date -d 'tomorrow' '+%d%m%Y')
ANTEONTEM=$(date -d '48 hours ago' '+%d%m%Y')
CINCOPASSADO=$(date -d '5 days ago' '+%d%m%Y')
QUINZEPASSADO=$(date -d '2 weeks ago' '+%d%m%Y')
MESPASSADO=$(date -d '1 month ago' '+%d%m%Y')
ANOPASSADO=$(date -d '1 year ago' '+%d%m%Y')	
LOGFILE="/home/backup/bkplog.txt"

##Variaveis Locais
IDSRV="0001"
SERVIDOR="$HOSTNAME"
IPSERVIDOR="192.168.0.200"
IPSERVIDORBKP="192.168.0.202"
SOURCE="/home/usuarios/Documentos/"
TARGET="/mnt/backup/$SERVIDOR"
RESERVE="/mnt/reserve/$SERVIDOR"
HDEXT="/mnt/hdexterno"
#nomes dos arquivos tar.bz2
ARQU="BKP_$(echo $IDSRV)_$(echo ${SERVIDOR})_${HOJE}.tar.bz2"
ARQONTEM="BKP_$(echo $IDSRV)_$(echo ${SERVIDOR})_${ONTEM}.tar.bz2"
####
#inicio do backup
####
echo " " >>$LOGFILE
echo "+++++++">>$LOGFILE
echo " " >>$LOGFILE
echo "Iniciando Backup do SERVIDOR "$SERVIDOR >>$LOGFILE
tar -cjf $TARGET/$ARQU $SOURCE* >>$LOGFILE
	if [ $? -eq 0 ]; then
				 echo STATUS ='OK' >> $LOGFILE
				 echo "Compactação ($SERVIDOR - $HOJE) realizado com sucesso" >>$LOGFILE
				 cd $TARGET
					if mount | grep -q "hdexterno" ; then				 #aqui verifico se o hd externo está montado
  						echo "HD Externo Montado OK" >>$LOGFILE
						cp $ARQU $BACKUP
						cp $ARQU $RESERVE
						cp $ARQU $HDEXT 
					else
				  	    echo "Aguarde Montando HD Externo" >>$LOGFILE
						mount -a
							if mount | grep -q "hdexterno" ; then 
  							echo "HD Externo Montado OK" >>$LOGFILE
							cp $ARQU $BACKUP
							cp $ARQU $RESERVE
							cp $ARQU $HDEXT 
						else
				  	    	echo "Não foi encontrado HD Externo" >>$LOGFILE
							cp $ARQU $BACKUP
							cp $ARQU $RESERVE
	 					fi				 
	else
 		echo STATUS='FAIL' >>$LOGFILE
		echo "Compactação ($SERVIDOR - $HOJE) falhou ao executar" >>$LOGFILE
	fi	
	
if [ $? -eq 0 ]; then
	 echo STATUS ='OK' >> $LOGFILE
	 echo "Backup ($SERVIDOR - $HOJE) realizado com sucesso" >>$LOGFILE
else 
	echo STATUS='FAIL' >>$LOGFILE
	echo "Backup ($SERVIDOR - $HOJE) falhou ao executar" >>$LOGFILE
fi
echo " " >>$LOGFILE
echo "+++++++" >>$LOGFILE
echo " " >>$LOGFILE
exit

No darvin este aqui:

#!/bin/bash
#
#BACKUP E COPIA DE ARQUIVO PARA 3 Locais
#darvin.sh
#Criado em 23/08/2016
#por Paulo J. Maestrello
#
## algumas variaveis encontradas aqui, não são utilizadas neste script, mas as tenho sempre como cabeçalho, pois em outros processos uso, e gostaria que voces ##também tivessem elas.
##Variaveis Globais
AGORA=$(date +%A"  "%d/%m/%Y-%HH:%MM"  "%:z%Z)
HOJE=$(date +%d%m%Y)
ONTEM=$(date -d 'yesterday' '+%d%m%Y')
AMANHA=$(date -d 'tomorrow' '+%d%m%Y')
ANTEONTEM=$(date -d '48 hours ago' '+%d%m%Y')
CINCOPASSADO=$(date -d '5 days ago' '+%d%m%Y')
QUINZEPASSADO=$(date -d '2 weeks ago' '+%d%m%Y')
MESPASSADO=$(date -d '1 month ago' '+%d%m%Y')
ANOPASSADO=$(date -d '1 year ago' '+%d%m%Y')	
LOGFILE="/home/backup/bkplog.txt"

##Variaveis Locais
IDSRV="0002"
SERVIDOR="$HOSTNAME"
IPSERVIDOR="192.168.0.201"
IPSERVIDORBKP="192.168.0.202"
SOURCE="/home/usuarios/Documentos/"
TARGET="/mnt/backup/$SERVIDOR"
RESERVE="/mnt/reserve/$SERVIDOR"
HDEXT="/mnt/hdexterno"
#nomes dos arquivos tar.bz2
ARQU="BKP_$(echo $IDSRV)_$(echo ${SERVIDOR})_${HOJE}.tar.bz2"
ARQONTEM="BKP_$(echo $IDSRV)_$(echo ${SERVIDOR})_${ONTEM}.tar.bz2"
####
pg_dump -s bcodedados -f /home/sistemabkp/estrut.sql
pg_dump -a bcodedados -f /home/sistemabkp/dados.sql
pg_dumpall -g > /home/sistemabkp/usuarios.sql
tar -cvzf /home/sistemabkp/$ARQU  /home/sistemabkp/*.sql
if [ $? -eq 0 ]; then
				 echo STATUS ='OK' >> $LOGFILE
				 echo "Compactação ($SERVIDOR - $HOJE) realizado com sucesso" >>$LOGFILE
				 cd /home/sistemabkp/
					if mount | grep -q "hdexterno" ; then				 #aqui verifico se o hd externo está montado
  						echo "HD Externo Montado OK" >>$LOGFILE
						cp $ARQU $BACKUP
						cp $ARQU $RESERVE
						cp $ARQU $HDEXT 
						vacuumdb -z -d bcodedados -f
						rm *.sql
					else
				  	    echo "Aguarde Montando HD Externo" >>$LOGFILE
						mount -a
							if mount | grep -q "hdexterno" ; then 
  							echo "HD Externo Montado OK" >>$LOGFILE
							cp $ARQU $BACKUP
							cp $ARQU $RESERVE
							cp $ARQU $HDEXT
							vacuumdb -z -d bcodedados -f
							rm *.sql 
						else
				  	    	echo "Não foi encontrado HD Externo" >>$LOGFILE
							cp $ARQU $BACKUP
							cp $ARQU $RESERVE
							vacuumdb -z -d bcodedados -f
							rm *.sql
	 					fi				 
	else
 		echo STATUS='FAIL' >>$LOGFILE
		echo "Compactação ($SERVIDOR - $HOJE) falhou ao executar" >>$LOGFILE
if [ $? -eq 0 ]; then
	 echo STATUS ='OK' >> $LOGFILE
	 echo "Backup ($SERVIDOR - $HOJE) realizado com sucesso" >>$LOGFILE
else 
	echo STATUS='FAIL' >>$LOGFILE
	echo "Backup ($SERVIDOR - $HOJE) falhou ao executar" >>$LOGFILE
fi
echo " " >>$LOGFILE
echo "+++++++" >>$LOGFILE
echo " " >>$LOGFILE
exit

No nicole este:

#!/bin/bash
#
#BACKUP E COPIA DE ARQUIVO PARA 3 Locais
#gumball.sh
#Criado em 23/08/2016
#por Paulo J. Maestrello
#
## algumas variaveis encontradas aqui, não são utilizadas neste script, mas as tenho sempre como cabeçalho, pois em outros processos uso, e gostaria que voces ##também tivessem elas.
##Variaveis Globais
AGORA=$(date +%A"  "%d/%m/%Y-%HH:%MM"  "%:z%Z)
HOJE=$(date +%d%m%Y)
ONTEM=$(date -d 'yesterday' '+%d%m%Y')
AMANHA=$(date -d 'tomorrow' '+%d%m%Y')
ANTEONTEM=$(date -d '48 hours ago' '+%d%m%Y')
CINCOPASSADO=$(date -d '5 days ago' '+%d%m%Y')
QUINZEPASSADO=$(date -d '2 weeks ago' '+%d%m%Y')
MESPASSADO=$(date -d '1 month ago' '+%d%m%Y')
ANOPASSADO=$(date -d '1 year ago' '+%d%m%Y')	
LOGFILE="/home/backup/bkplog.txt"

##Variaveis Locais
IDSRV="0003"
SERVIDOR="$HOSTNAME"
IPSERVIDOR="192.168.0.202"
IPSERVIDORBKP="192.168.0.202"
SOURCE="/home/usuarios/Documentos/"
TARGET="/mnt/backup/$SERVIDOR"
RESERVE="/mnt/reserve/$SERVIDOR"
HDEXT="/mnt/hdexterno"
#nomes dos arquivos tar.bz2
ARQU="BKP_$(echo $IDSRV)_$(echo ${SERVIDOR})_${HOJE}.tar.bz2"
ARQONTEM="BKP_$(echo $IDSRV)_$(echo ${SERVIDOR})_${ONTEM}.tar.bz2"
####
#inicio do backup
####
echo " " >>$LOGFILE
echo "+++++++">>$LOGFILE
echo " " >>$LOGFILE
echo "Iniciando Backup do SERVIDOR "$SERVIDOR >>$LOGFILE
tar -cjf $TARGET/$ARQU $SOURCE* >>$LOGFILE
	if [ $? -eq 0 ]; then
				 echo STATUS ='OK' >> $LOGFILE
				 echo "Compactação ($SERVIDOR - $HOJE) realizado com sucesso" >>$LOGFILE
				 cd $TARGET
					if mount | grep -q "hdexterno" ; then				 #aqui verifico se o hd externo está montado
  						echo "HD Externo Montado OK" >>$LOGFILE
						cp $ARQU $BACKUP
						cp $ARQU $RESERVE
						cp $ARQU $HDEXT 
					else
				  	    echo "Aguarde Montando HD Externo" >>$LOGFILE
						mount -a
							if mount | grep -q "hdexterno" ; then 
  							echo "HD Externo Montado OK" >>$LOGFILE
							cp $ARQU $BACKUP
							cp $ARQU $RESERVE
							cp $ARQU $HDEXT 
						else
				  	    	echo "Não foi encontrado HD Externo" >>$LOGFILE
							cp $ARQU $BACKUP
							cp $ARQU $RESERVE
	 					fi				 
	else
 		echo STATUS='FAIL' >>$LOGFILE
		echo "Compactação ($SERVIDOR - $HOJE) falhou ao executar" >>$LOGFILE
	fi	
	
if [ $? -eq 0 ]; then
	 echo STATUS ='OK' >> $LOGFILE
	 echo "Backup ($SERVIDOR - $HOJE) realizado com sucesso" >>$LOGFILE
else 
	echo STATUS='FAIL' >>$LOGFILE
	echo "Backup ($SERVIDOR - $HOJE) falhou ao executar" >>$LOGFILE
fi
echo " " >>$LOGFILE
echo "+++++++" >>$LOGFILE
echo " " >>$LOGFILE
exit

Espero que este artigo ajude você a ter ideias.

Lembrando que batizei meus servidores com nomes de personagens de um desenho e o copyright não me pertence, somente utilizei aqui por motivos didáticos.

Estes arquivos podem ser modificados, alterados, e distribuídos livremente, se possível, mencionar esse artigo nos seus comentários.

Obrigado pela oportunidade.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Os scripts
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

BigBashView, interface gráfica para o seu shell script

Multi-head usando udev e Xnest

Minha caixa de ferramentas no GNU/Linux

Como Configurar seu Lucent Winmodem

Antispam em Shell Script

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts