Boa tarde palmeirenses..... hahaha...

Deixando as brincadeiras de lado.... um colega meu de serviço pediu para eu ajudá-lo em um shell script para um trabalho da facu dele... como o programa já serviu para o trabalho dele... vou postar aqui, se alguém tiver alguma idéia melhor para algumas partes do código só postar.

Código :
#!/bin/bash
#
# Autor: Filipe Vieira
#
GeraTar(){
# Cria arquivo baseado na pasta informado pelo usuario colocando a data atual no formato ANOMESDIA
# Trata o retorno do comando enviando para /dev/null, tanto erro qto sucesso
# IF para verificar se origem existe, caso exista efetua processo de backup
# Caso nao exista retorna mensagem de erro e volta para Menu
if [ -d $DPATH ]; then
 mkdir -p /bkp/$DPATH # Se exisir nao gera erro
 # Comando Tar utilizado para agrupar arquivos 
 # Opcao "u" para agrupar e se necessario efetuar o agrupapemnto com update; "f" para indicar arquivo
 tar uf /bkp$DPATH/bkp_`date +"%Y%m%d"`.tar $DPATH > /dev/null 2>&1 /dev/null 
 # Compactador gzip para o arquivo criado
 gzip /bkp$DPATH/bkp_`date +"%Y%m%d"`.tar
 echo "Data de backup: " `date +"%d/%m/%Y"` > /bkp$DPATH/bkp.log
 echo "Arquivos contidos no backup: "  >> /bkp$DPATH/bkp.log
 # Verifica os arquivos dentro do arquivo tar filtrando apenas arquivos
 tar ztf /bkp$DPATH/bkp_`date +"%Y%m%d"`.tar.gz >>  /bkp$DPATH/bkp.log 
 echo "Total: $( tar ztf /bkp/$DPATH/bkp_`date +"%Y%m%d"`.tar.gz | grep /[^"$"] | wc -l ) Arquivos" >> /bkp$DPATH/bkp.log
 # If para verificar existencia do arquivo, caso tenha sido gerado gera mensagem de sucesso para o usuario usando o dialog
 if [ -e /bkp$DPATH/bkp_`date +"%Y%m%d"`.tar.gz ]; then 
  dialog --title 'CONFIRMACAO' --msgbox 'Backup de '$DPATH' efetuado com sucesso!!!'     7 50
  #Trata ok do comando anterior chamando o Menu principal
  if [ $? = 0 ]; then
   Main
  fi 
 fi
else 
 dialog --title 'ERRO' --msgbox 'Backup de '$DPATH' nao foi efetuado favor verficar se diretorio de origem existe !!!'     7 50
 Main
fi
}
# Funcao de Backup
Backup(){
# Atribui a variavel DPATH o nome do diretorio escrito pelo usuario  
DPATH=$( dialog --stdout --inputbox 'Qual pasta sera feito o backup ? Ex: /home/geek ' 0 70 )
# IF trata o cancel do comando dialog voltando para o Menu principal
if [ $? = 1 ]; then
 Main
else
# Procura arquivo que tenha sido alterado com a menos de uma semana
 find /bkp$DPATH/*.tar* -user 7 > /dev/null 2>&1
# Trata se o arquivo foi encontrado 
 if [ $? = 0 ]; then
# Caso o arquivo tenha sido gerado a menos de 1 semana o comando abaixo informa o usario de que a pasta jah foi backupeada
# Dando a possibilidade do mesmo gerar o backup ou nao 
  OP=$( dialog --stdout --title 'ATENCAO' --yesno 'O backup desta pasta foi efetuado esta semana\nVoce tem certeza que deseja realizar o backup ?' 7 70 )
  if [ $? = 0 ]; then
# Caso o usuario selecione YES chama a funcao para gerar o backup
   GeraTar
  else
# Caso o usuario selecione NO volta para o Menu principal
   Main
  fi
 else
# Caso nao tenha encontrado nenhum arquivo com mais de 1 semana de geracao chama a Funcao de backup
  GeraTar
 fi
fi
}
Restore(){
# Atribui a variavel DPATH o nome do diretorio escrito pelo usuario  
DPATH=$( dialog --stdout --inputbox 'Qual pasta voce deseja restaurar ? Ex: /home/geek ' 0 70 )
# Trata a opcao de cancel da funcao retornando para o menu principal
if [ $? = 1 ];then
 Main;
else
# Verifica se o diretorio informado pelo usuario existe
 if [ -d $DPATH ]; then
# Se o arquivo existir efetuara a restauracao do backup
  cd /bkp$DPATH
# Tar programa utilizado para agrupamento de arquivos, utilizando as opcoes: "z" do compactador gzip; "x" opcao de extracao 
  tar zxf *.tar*
# Copia dos arquivos extraidos da pasta /bkp$DPATH para a pasta $DPATH utilizando a opcao "p" preservando as permissoes
# Opcao "r" de recursivo copiando diretorios e arquivos internos e opcao "u" de update de arquivo 
  cp -pru /bkp$DPATH$DPATH/ $DPATH
# Remove diretorio de origem da extracao
  rm -rf  /bkp$DPATH/$DPATH
# Caso o comando anterior tenha sido executado com sucesso apresenta a mensagem de sucesso do restore utilizando o dialog
# e retorna para o menu principal
  if [ $? = 0 ]; then
   dialog --title 'CONFIRMACAO' --msgbox 'Restore de '$DPATH' efetuado com sucesso!!!'     7 50
   Menu
  fi
 else
# Caso o diretorio informado pelo o usuario nao exista eh informado a tela de erro ao usuario e retorna ao menu principal
   dialog --title 'ERRO' --msgbox 'Restore de '$DPATH' nao foi efetuado favor verficar se diretorio de destino existe !!!'     7 50
   Menu
 fi
fi
}
# Funcao Menu apresentado chamando as funcoes de backup e restore 
Menu(){
op=$( dialog --stdout --title 'Backup / Restore'  \
 --menu  'Escolha a opcao desejada:'   \
 0 0 0       \
 Backup  'Efetua backup de pasta'   \
 Restore 'Efetua restauracao de pasta backup' ) 
$op # Retorna opcao do menu chamando a funcao escolhida 
}
# Funcao Principal chamando a Funcao Menu apenas para organizacao prevendo alguma atualizao programa 
Main(){
 Menu
}
# Chamada da Funcao Main para inicio do programa... shell nao eh compilado... ou seja, pra ele entender ele tem q ler antes de executar
Main

Abços
Filipe