Backup Automatizado (atualizado)
Publicado por Antônio Cláudio da Costa Ayres 20/10/2004 (última atualização em 05/08/2011)
[ Hits: 14.976 ]
Homepage: http://www.onlydesign.com.br
Download 1311774552.backup.sh (versão 2)
Script de Backup automatizado atualizado (mudei um pouco desde o último).
Agora ele salva de forma mais bem organizada criando diretórios com a data.
Ele checa se você invocou corretamente o programa (passando 2 parâmetros) depois checa se você é root. Feito isto aguarda 15 segundos caso queira cancelar e faz o backup completo colocando num diretorio com a data. Gera 3 logs: Log completo, log de erros e md5sum do arquivo.
Uso: backup.sh <origem> <destino>
Ex: ./backup.sh /var/spool /mnt/backup
Versão 2 - Enviado por Ernander Lataliza em 27/07/2011
Changelog: Implementação do Bloco que não contemplava a Busca de diretórios e arquivos com espaços.
#!/bin/sh
# Script automatizado de backup
# Autor: Antonio Claudio da Costa Ayres (LedStyle)
# Visite: www.tuxresources.org
# Data de criacao: 09/10/2004
# Previsao da proxima atualizacao: Arrumar o "FOR" para salvar subdiretorios em arquivos distintos
# Declaracao das variaveis
DATA=`date +%d%m%Y` # Variavel para armazenar a data atual do sistema em formato utilizavel para o nome do backup
SUCESSO=$? # Variavel que retorna se o ultimo comando foi executado com sucesso ou nao
ORIGEM=$1 # Variavel que armazena a origem do backup. Neste caso o primeiro parametro passado
DESTINO=$2 # Variavel que armazena o destino do backup. Neste caso o segundo parametro digitado
DIRETORIO=`basename $1`-$DATA # Variavel que armazena o nome do diretorio a ser criado para se jogar o backup dentro
CONTADOR=15 # Variavel que armazena o numero de segundos que o backup deve aguardar antes de iniciar caso queira cancelar
# Funcao Principal. Tem por objetivo dar inicio ao processo
Principal()
{
Root # Chama a funcao Root
}
# Funcao Root. Tem por objetivo testar se o usuario e root ou nao
Root()
{
if [ $UID -ne 0 ]; then # Testa se o usuario e root
echo "Apenas o root pode disparar uma rotina de backup. Abortando..."
exit 1
else
Permicoes # Chama a funcao Permicoes
fi
}
# Funcao Permicoes. Tem por objetivo testar as permissoes de escrita no diretorio de destino
Permicoes()
{
if [ -d $DESTINO ]; then # Testa se o diretorio de destino existe
Preeliminar # Chama a funcao Preeliminar
else
echo "Nao foi possivel realizar o backup. O diretorio $DESTINO nao existe."
exit 2
fi
}
# Funcao Preeliminar. Tem por objetivo exibir todas as informacoes antes de executar a rotina
Preeliminar()
{
echo "------------------------------------------------------------" # Meus creditos
echo "| `date +%d/%m/%Y` |"
echo "| Backup Automatizado |"
echo "| Por LedStyle |"
echo "------------------------------------------------------------"
echo
sleep 1
echo "Voce optou por fazer um backup do diretorio $ORIGEM e todo o seu conteudo"
echo "O backup sera armazenado em $DESTINO/$DIRETORIO/"
sleep 1
echo "Irei iniciar o processo de backup em $CONTADOR segundos."
sleep 1
echo "Pressione Ctrl + C caso queira cancelar..."
printf "[ "
while [ $CONTADOR -ne "0" ] # Imprime na tela uma barrinha com base no contador de segundos. Isto serve para aguardar um numero determinado de segundos caso queira cancelar
do
printf ". "
sleep 1
CONTADOR=`expr $CONTADOR - 1`
done
printf " ]"
echo
echo "Iniciando o backup. Isto pode demorar dependendo do tamanho e tipo de arquivos a serem salvos..."
Backup # Chamando a funcao Backup
}
# Variavel Backup. Tem por objetivo disparar o processo de backup e armazenar os logs
Backup()
{
mkdir -p $DESTINO/$DIRETORIO # Criando diretorio onde o backup sera armazenado
echo "Log gerado automaticamente pelo script de Backup Automatizado." > $DESTINO/$DIRETORIO/backup.log
echo "Seja livre, use Linux!" >> $DESTINO/$DIRETORIO/backup.log
echo "Data e hora do inicio do backup: `date`" >> $DESTINO/$DIRETORIO/backup.log # Armazena a data e hora de inicio do processo no arquivo de log
echo "Diretorio de origem: $1" >> $DESTINO/$DIRETORIO/backup.log
echo "Diretorio de destino: $2" >> $DESTINO/$DIRETORIO/backup.log
echo >> $DESTINO/$DIRETORIO/backup.log
echo >> $DESTINO/$DIRETORIO/backup.log
echo ------------------------------------------------------------------ >> $DESTINO/$DIRETORIO/backup.log
echo >> $DESTINO/$DIRETORIO/backup.log
echo >> $DESTINO/$DIRETORIO/backup.log
tar -czvf $DESTINO/$DIRETORIO/$DIRETORIO.tar.gz $ORIGEM >> $DESTINO/$DIRETORIO/backup.log 2>> $DESTINO/$DIRETORIO/erros.log # Faz o backup comprimindo num tar.gz, canaliza a saida para o arquivo backup.log e ainda canaliza os erros para o arquivo erros.log
if [ $? -ne 0 ]; then # Testa se o ultimo comando foi execudado com sucesso. Para se certificar que o backup foi realmente realizado
echo "Nao foi possivel fazer o backup. Para maiores detalhes consulte o arquivo $DESTINO/$DIRETORIO/erros.log" #Imprime a mensagem de erro caso o ultimo comando nao tenha sido executado com sucesso
echo "Abortando..."
exit 2
else # Em caso de sucesso no backup...
########################################################
# Este bloco ainda nao foi implementado pois caso haja algum arquivo ou diretorio com espacos em seu nome a variavel "$i" recebe apenas a primeira parte como parametro. Entao nao e possivel comprimir estes arquivos pois o tar nao os encontrara. Exemplo:
# Se um arquivo chama "meu arquivo.txt" para a variavel $i se chamarao 2 arquivos: "meu" e "arquivo.txt". O tar nao encontrara o arquivo "meu" nem mesmo o "arquivo.txt" e estes nao serao backupeados.
########################################################
# for i in `ls $ORIGEM`;
# do
# echo "Fazendo backup de $i"
# echo >> $DESTINO/$DIRETORIO/backup.log
# tar -czvf $DESTINO/$DIRETORIO/"$i".tar.gz $ORIGEM/"$i" >> $DESTINO/$DIRETORIO/backup.log 2>> $DESTINO/$DIRETORIO/erros.log
# if [ $? -ne 0 ]; then
# echo "Nao foi possivel fazer o backup. Para maiores detalhes consulte o arquivo $DESTINO/$DIRETORIO/erros.log"
# echo "Abortando..."
# exit 3
# else
# md5sum $DESTINO/$DIRETORIO/$i > $DESTINO/$DIRETORIO/$1.md5
# echo >> $DESTINO/$DIRETORIO/backup.log
# echo >> $DESTINO/$DIRETORIO/backup.log
# echo ------------------------------------------------------------------ >> $DESTINO/$DIRETORIO/backup.log
# echo >> $DESTINO/$DIRETORIO/backup.log
# echo >> $DESTINO/$DIRETORIO/backup.log
# fi
# done
########################################################
md5sum $DESTINO/$DIRETORIO/$DIRETORIO.tar.gz >> $DESTINO/$DIRETORIO/$DIRETORIO.md5 # Gera um md5sum do arquivo de backup para futuras consultas de consistencia
echo "Termino do backup: `date`" # Loga a data e hora do termino do backup no arquivo de log
echo "Backup realizado com sucesso!" # Informa o termino do processo
sleep 1
echo
echo "Voce pode conferir o log completo em $DESTINO/$DIRETORIO/backup.log" # Exibe o caminho para o log
echo "Antes de voltar um backup nao se esqueca de conferir o MD5SUM que se encontra em $DESTINO/$DIRETORIO/$DIRETORIO.md5" # Exibe o caminho para o md5sum
sleep 1
echo "Obrigado por utilizar o script automatizado de backup"
fi
}
# Inicio do Script. Aqui chamo a funcao Principal para inicio do processo
clear # Limpa a tela
if [ "$#" -ne 2 ] ; then # Testa se o usuario passou 2 parametros: <origem> <destino>
echo
echo
echo "Utilize corretamente este script de backup conforme o modelo a seguir:"
sleep 1
echo
echo "Uso: `basename $0` [origem] [destino]"
echo
exit 0 # Aborta caso o usuario nao tenha passado 2 parametros
else
Principal # Chama a funcao Principal
Instalar o Navegador Tor em qualquer distribuição Linux
Monitoração e coleta de dados de performance de servidores GNU/Linux
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)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
Queda no serviços da Cloudflare, alguns sites estão fora do ar. (1)
Perfil criado no samba ad dc não loga no Windows 10 e 11 (11)









