Script de backup
Publicado por Ivan Moretto 01/03/2009 (última atualização em 12/09/2009)
[ Hits: 6.602 ]
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
Script para atualizar o sistema
Script para controle do Squid e firewall
Enviar mensagens Via Net Send no Linux
Programação do Dia da Tv Aberta
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)