Backup, restore e leitura de log com Dialog

Publicado por nelio 01/03/2009

[ Hits: 7.799 ]

Download back.sh




Pessoal, um colega do fórum estava precisando de um script que realiza se a função do titulo. Eu o fiz e vou postar aqui, pois achei que ficou bem legal e da uma grande idéia de como se trabalhar com dialog.

Eu sei que existem bugs no programa como está discrito no script e outros como títulos, etc... bestinhas, mas não pretendo continuar trabalhando nele, e do jeito que está se consegue trabalhar legal em cima. Pórem, qualquer dúvida se eu poder ajudar, postem ai....

  



Esconder código-fonte

#!/bin/sh
# autor Nelio B. Silva Jr
# este script eh somente para ter ideia, nao sendo recomendado para uso profissional, porem se consegue fazer um uso legal com algumas modificacoes
# Nele existe alguns, como diria, bugs, mas nao vou arrumar pois se eu continuar neste script, o pessoal na Arc Server vao ter que fechar as portas, rsrsrs,
# E os bugs do programa, sao por exemplo, nao esta chegando se usuario tem permissao, grupo, etc. existem algums paus tb de restore...
# enfim, eh isso qualquer coisa me falem....

#os caminhos abaixo, ao os caminhos que foram configurados, com o meu usuario oracle, alterem para o de vcs conforme necessario ou de interesse


caminho_backup=/home/oracle/rest   #caminho da pasta de backup, como ja havia na minha / a pasta backup utilizei esta
verifica_existe=/home/oracle/teste/verifica_existe.log #todos os oracle testes que estao daqui para frente, mudem para os enderecos de scripts de vcs.
verifica_restore=/home/oracle/teste/verifica_restore.log #nao eh necessario alterar em mais nenhum outro lugar. somente neste bloco
existe_restore=/home/oracle/teste/existe_restore
radio_tmp=/home/oracle/teste/radio_tmp.log
logs=/home/oracle/teste/logs.log
logs_tmp=/home/oracle/teste/logs_tmp.log

inicio(){

var=$( dialog --backtitle SUPER_BACKUP --title Super_Backup --stdout --menu 'Escolha uma opcao: ' 0 0 0 1 'BACKUP' 2 'RESTORE' 3 'LER_LOG' )
case $var in
1) backup;;
2) restore;;
3) ler_log;;
*) clear; echo 'saindo do programa'; exit;;
esac
}

executa_backup(){

cd $var_bac
mkdir -p $caminho_backup$var_bac
cd $var_bac
echo Data do Backup: `date "+%d/%m/%y  %H:%M"` >> $caminho_backup$var_bac/bkp.log
tar cvfz $caminho_backup"$var_bac"/backup.tar.gz *  >> $caminho_backup$var_bac/bkp.log
var_wc=$(wc -l $caminho_backup$var_bac/bkp.log|cut -d " " -f1) >/dev/null
var_wc1=$(($var_wc - 2))
echo 'Total:' $var_wc1 'arquivos' >>  $caminho_backup$var_bac/bkp.log
dialog --title 'CONFIRMACAO' --msgbox 'backup de '$var_bac' efetuado com sucesso!!!'     10 40
}

backup(){

var_bac=$(dialog --stdout --backtitle SUPER_BACKUP --title BACKUP --inputbox 'Digite o caminho' 0 0)
        if [ $? = 0 ]; then
        find $caminho_backup$var_bac -mmin +10 >$verifica_existe
                if test -s $verifica_existe
                then
                dialog --title 'CONFIRMACAO' --yesno 'backup de '$var_bac' ja existe!!!\nDeseja faze-lo mesmo assim?' 10 40
                        if [ $? = 0 ]; then
                        executa_backup
                        inicio
                        else
                        inicio
                        fi
                else
                        executa_backup
                        inicio
                fi
 else
        inicio
        fi
}

restore(){
cd $caminho_backup
find -iname *.tar.gz |cut -c2- > $verifica_restore
rm -rf $radio_tmp
while test -s $verifica_restore
do
        var=`head -1 $verifica_restore`
        echo "$var '' off " >> $radio_tmp
        sed -i '1d' $verifica_restore
done
var1=`cat $radio_tmp` >/dev/null
var_restore=$(dialog --stdout --radiolist 'teste' 0 0 0 $var1)
if [ $? = 0 ]; then
        dialog --title 'AVISO' --yesno 'Confirma restore de : '$var_restore 0 0
        if [ $? = 0 ]; then
                var2=$(dialog --stdout --backtitle SUPER_BACKUP --title RESTORE --inputbox 'Digite o caminho que deseja restaurar' 0 0 )
                if [ $? = 0 ]; then
                        cd $var2
                        tar xvzf $caminho_backup$var_restore >/dev/null
                        dialog --title 'teste' --msgbox 'Restaurado com sucesso !!!' 0 0
                        inicio
                else
                        dialog --title 'teste' --msgbox 'Restore cancelado' 0 0
                        inicio
                fi
        else
                dialog --title 'teste' --msgbox 'Restore cancelado' 0 0
                inicio
        fi
else
        dialog --msgbox 'Restore cancelado!!!' 0 0
        inicio

fi

}


ler_log(){
cd $caminho_backup
find -iname *.log |cut -c2- > $logs
rm -rf $logs_tmp
while test -s $logs
do
        var=`head -1 $logs`
        echo "$var '' off " >> $logs_tmp
        sed -i '1d' $logs
done
var1=`cat $logs_tmp` >/dev/null
var_restore=$(dialog --stdout --radiolist 'teste' 0 0 0 $var1)
if [ $? = 0 ]; then
        dialog --title 'Leitura' --textbox $caminho_backup$var_restore 0 0
        inicio
else
        dialog --msgbox 'Leitura Cancelada!!!' 0 0
        inicio
fi
}

inicio


Scripts recomendados

Script Administração SquidFacil Ubuntu 11.10

Copia arquivos distribuidos em pastas diferentes para uma única pasta.

Executando comandos remotos usando sshpass

Firewall simples, com opções de redirecionamento

pegando ip do windows update


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts