Script de backup
Publicado por Ivan Moretto 01/03/2009 (última atualização em 12/09/2009)
[ Hits: 6.790 ]
Criei este script para efetuar backup nos servidores que administro. Você pode informar os diretórios de origem e destino, excluir diretórios do backup etc. Ele enviará um email caso existam erros em alguma etapa do backup.
Obs.: É necessário baixar também o script para envio de email: http://www.vivaolinux.com.br/script/Envio-de-email-via-console
#! /bin/sh
####################################################################
# Nome do Script: backup.sh
# Desenvolvido por: Ivan Moretto
# Data : 15/02/2009
# Versao : 1.0
####################################################################
# * * * * * * * * * * * * * IMPORTANTE * * * * * * * * * * * * * * #
# Para executa-lo na crontab eh necessario que sejam informados os #
# arquivos de saida 1> e 2> como no exemplo abaixo. #
# 00 20 * * * /etc/bin/backup.sh 1>/var/log/backup/saida1.log 2>/var/log/backup/saida2.log
# O 1> e' o resultado da gravacao do cd/dvd e o 2> e' o resultado #
# do mkisofs, se nao for colocado o script nao funciona no crontab.#
# Pode acreditar, apanhei uma semana para descobrir porque o danado#
# funcionava quando startava na linha de comando e quando startava #
# pelo cron ele nao concluia a geracao do ISO e consequentemente a #
# gravacao. #
####################################################################
# Definicao das variaveis utilizadas neste script
ORIGEM="/trabalho /etc /home" #coloque aqui todos os diretorios a serem copiados
PREFIXO="trabalho-etc-home" #prefixo do nome do arquivo
DESTINO="/backup" #Onde o arquivo tar sera armazenado
ISO="/backup-iso" #Onde o arquivo ISO sera armazenado
TAR="/bin/tar" #O binario que iremos utilizar
AUXILIAR="/backup-aux" #Guarda backups anteriores
LOGS="/var/log/backup" #Diretorio de Logs
OPCOES1="--exclude="*.jpeg"" #
OPCOES2="--exclude=".wav"" # Opcoes a serem passadas para o tar
OPCOES3="--exclude=".mp3"" #
OPCOES4="--exclude="outlook"" #
OPCOES5="-cjvf" #
NOME_SCRIPT="/etc/bin/backup.sh" #Caminho absoluto do script de backup
###################################################################
# Funcao para atualizar data e hora da variavel DATA_DO_BACKUP
atualiza_data () {
#Cria data e hora no formato AAAA/MM/DD HH:MM:SS
DATA_DO_LOG=`date +%Y\/%m\/%d\ %H\:%M\:%S`
DATA_DO_BACKUP=`date +%Y-%m-%d-%H-%M-%S`
}
atualiza_data
NOME_COMPLETO_ARQUIVO_BACKUP=$HOSTNAME"_"$PREFIXO"_"$DATA_DO_BACKUP".tar.bz2"
#Limpa arquivo parte.log
echo "" > $LOGS/parte.log
clear
# Se nao existir o diretorio de log e destino para backup ele cria o conteudo $LOGS
if ! ls $LOGS ; then
mkdir $LOGS
atualiza_data
echo "$DATA_DO_LOG - #### CRIADO DIRETORIO DE LOG $LOGS " >> $LOGS/parte.log
fi
if ! ls $DESTINO ; then
mkdir $DESTINO
atualiza_data
echo "$DATA_DO_LOG - #### CRIADO DIRETORIO DE DESTINO $DESTINO" >>$LOGS/parte.log
fi
if ! ls $AUXILIAR ; then
mkdir $AUXILIAR
atualiza_data
echo "$DATA_DO_LOG - #### CRIADO DIRETORIO AUXILIAR $AUXILIAR" >>$LOGS/parte.log
fi
if ! ls $ISO ; then
mkdir $ISO
atualiza_data
echo "$DATA_DO_LOG - #### CRIADO DIRETORIO ISO $ISO" >>$LOGS/parte.log
fi
#Remove Backup com data de 30 dias (Pode ser alterado conforme necessidade)
DATA30DIAS=$(date +%Y-%m-%d --date '30 days ago')
rm $AUXILIAR/$HOSTNAME"_"$PREFIXO"_"$DATA30DIAS*
#Move backup anterior para diretorio auxiliar
mv $DESTINO/* $AUXILIAR
#Remove Imagem ISO anterior
rm $ISO/* -f
#Entrando no diretorio destino
cd $DESTINO
echo " " >>$LOGS/parte.log
atualiza_data
echo "$DATA_DO_LOG ==============================================================" >>$LOGS/parte.log
atualiza_data
echo "$DATA_DO_LOG - Backup iniciado ..." >>$LOGS/parte.log
echo "$DATA_DO_LOG - Backup do(s) diretorio(s) $ORIGEM" >>$LOGS/parte.log
echo "$DATA_DO_LOG - $TAR $OPCOES1 $OPCOES2 $OPCOES3 $OPCOES4 $OPCOES5 $NOME_COMPLETO_ARQUIVO_BACKUP $ORIGEM" >>$LOGS/parte.log
$TAR $OPCOES1 $OPCOES2 $OPCOES3 $OPCOES4 $OPCOES5 $NOME_COMPLETO_ARQUIVO_BACKUP $ORIGEM >$LOGS/tar.log
if ! ls $NOME_COMPLETO_ARQUIVO_BACKUP ; then
atualiza_data
echo "$DATA_DO_LOG - ERRO - BACKUP NAO EFETUADO. ???" >>$LOGS/parte.log
/etc/bin/email.sh "BACKUP - $HOSTNAME " "$DATA_DO_LOG - ERRO - BACKUP NAO EFETUADO. ???" $LOGS/parte.log
exit 1
fi
atualiza_data
echo "$DATA_DO_LOG - O arquivo gerado encontra-se no diretorio $DESTINO" >>$LOGS/parte.log
atualiza_data
echo "$DATA_DO_LOG - Backup concluido ***" >>$LOGS/parte.log
atualiza_data
echo "$DATA_DO_LOG - Gerando imagem ISO ..." >>$LOGS/parte.log
mkisofs -o $ISO/backup.iso -JrT $DESTINO
if [ "$?" != "0" ]; then # Checa se houve erro na criacao da imagem ISO
atualiza_data
echo "$DATA_DO_LOG - Erro durante criacao da imagem ISO ..." >>$LOGS/parte.log
/etc/bin/email.sh "backup - $HOSTNAME" "$DATA_DO_LOG - Erro durante a criacao da imagem ISO ..." $LOGS/parte.log
cat $LOGS/parte.log >>$LOGS/backup.log
exit 1
fi
#desmonta midia caso esteja montada
umount /media/cdrom
sleep 3
atualiza_data
echo "$DATA_DO_LOG - Formatando CD/DVD ..." >>$LOGS/parte.log
dvd+rw-format -force /dev/dvd
if [ "$?" != "0" ]; then # Checa se houve erro na formatacao
atualiza_data
echo "$DATA_DO_LOG - Erro durante formatacao do CD/DVD ..." >>$LOGS/parte.log
/etc/bin/email.sh "BACKUP - $HOSTNAME" "$DATA_DO_LOG - Erro durante formatacao do CD/DVD ..." $LOGS/parte.log
cat $LOGS/parte.log >>$LOGS/backup.log
exit 1
fi
atualiza_data
echo "$DATA_DO_LOG - Gravando imagem ISO no CD/DVD ..." >>$LOGS/parte.log
# Utilizar opcoes de gravacao conforme sua unidade (CD ou DVD)
# e Informar onde esta instalada sua unidade (/dev/hda)
growisofs -dvd-compat -speed=4 -Z /dev/dvd=/$ISO/backup.iso
# dd if=$DESTINO"/"NOME_COMPLETO_ARQUIVO_BACKUP of=/dev/hda
if [ "$?" != "0" ]; then # Checa se houve erro na gravacao
atualiza_data
echo "$DATA_DO_LOG - Erro durante gravacao do CD/DVD ..." >>$LOGS/parte.log
/etc/bin/email.sh "BACKUP - $HOSTNAME" "$DATA_DO_LOG - Erro durante gravacao do CD/DVD ..." $LOGS/parte.log
cat $LOGS/parte.log >>$LOGS/backup.log
exit 1
fi
atualiza_data
echo "$DATA_DO_LOG - Gravacao do CD/DVD concluida ..." >>$LOGS/parte.log
eject
cat $LOGS/parte.log >>$LOGS/backup.log
exit 0
Acompanhamento de log squid com hora real
Script para encontrar arquivos .wam, .mpeg
Automatizando com Script-Expect
Script Para Ajustar o Intevalo de Legendas 2
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)
Secure boot, artigo interessante, nada técnico. (5)
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)









