Backup Automatizado (atualizado)
Publicado por Antônio Cláudio da Costa Ayres 20/10/2004 (última atualização em 05/08/2011)
[ Hits: 14.757 ]
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
Backup com data no nome do arquivo
Repasse de parâmetros de um script a outro
Liberação do servidor DNS no firewall
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
O que esta havendo com o mercado de ti? (8)
Não consigo cadastrar nenhuma conta online (4)
Hotspot Mikrotik nao carrega pagina de login. (0)