Fagner,

em virtude do tamanho do seu arquivo, acho que vc deveria pensar em
algumas simplificacoes como esta

testar_diretorio(){
if [ -d "${1}" ] ; then # eu passo um parametro so... ;-)
    echo "DIRETORIOS '${1}' ENCONTRADO ...OK"
else
    echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO '$1'"
    return 1; # propagar o erro pra "cima"!
fi
}

...
DIRETORIOS=(${ANOTACOES} ${CONF} ... ${LINUX} ${SCRIPTS} ${TMP} ${MAIL})

for DIR in [EMAIL PROTECTED]; do
    testar_diretorio ${DIR}
done


vc agrupou as funções de acordo com o objetivo delas, mas acho que vc
poderia substituir esta forma de pensar pelo uso de funções de acordo
com a 'repetitividade' delas no teu script. so dessa forma seu script
deve ficar 60% menor.

outra coisa interessante seria vc OU executar o script ja
redirecionando a saida para o seu log, ou então unir a saida padrão (e
a de erro, por que não?) para o seu log com um unico comando

LOG=/path/to/logfile
ERR=/path/to/errfile
exec 1> ${LOG}
exec 2> ${ERR}

ou

exec 2>&1

dessa forma vc evita fazer >> ${...} em cada echo.

por fim, eu sugiro que vc faça algo como

if [ -d ${PASTA_DESTINO} ];then
    echo "mensagem boa"
else
    echo "mensagem ruim"

    while mount opcoes ;do
        echo "TENTANDO MONTAR DIRETORIO"
        sleep 10
    done
    echo "COMPARTILHAMENTO MONTADO...OK"
fi

Eh claro que, ficar tentando montar a cada 10 segundos pode não ser
uma boa estrategia, afinal por que vc não conseguiria montar? vc
deveria interpretar o error code que o mount retorna, veja o man, por
exemplo:

Boa Sorte

Tiago

On 2/16/07, fagnerpo <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Ola pessoal, venho nos ultimos dias procurando uma solução para o meu
>  problema mas não tenho obtido sucesso. Sou mais um novato no shell
>  Script, apanhando do tio Bash, estou criando um script de backup( meu
>  primeiro script),e estou com problemas, espero que tenha alguém que
>  possa me auxiliar neste scripts !!!! estou colocando ele abaixo e
>  citando os erros correntes...
>
>  ##################################################
>  #!/bin/bash
>
>  cd /dados/bkp
>  DIA=`date +%A`
>  PASTA_DESTINO="/mnt/2nv_srv/vm/2NV/Fagner/"
>  DIR_LOG="/dados/bkp/"
>  LOG="bkp-$DIA.log"
>  DATA="date +%d/%m/%Y"
>  HORA="date +%H:%M"
>  MOUNT="mount | grep vm"
>  MNT_REMOTO="mount -t cifs -o username=fpires,password=d29m07
>  //172.16.129.180/vm /mnt/2nv_srv/vm"
>  TAMANHO="du -h bkp-$DIA.tar.gz"
>
>  ### DIRETORIOS QUE DEVEM SER REALIZADO BKP
>
>  ANOTACOES="/dados/anotacoes/"
>  CONF="/dados/arq.conf/"
>  CONTROLES="/dados/controles/"
>  DOCUMENTACAO="/dados/documentacao/"
>  PACKAGES="/dados/packages/"
>  LINUX="/dados/linux/"
>  SCRIPTS="/dados/scripts/"
>  TMP="/dados/temp/"
>  MAIL="/root/.mozilla-thunderbird/"
>  DIRETORIOS="$ANOTACOES $CONF $CONTROLES $DOCUMENTACAO $PACKAGES $LINUX
>  $SCRIPTS $TMP $MAIL"
>
>  ### VERIFICANDO SE A PASTA DESTINO EXISTE, CASO NÃO EXISTA, O PROCESSO
>  SERÁ ABORTADO
>
>  function testes_dest
>  {
>     if [ ! -d $PASTA_DESTINO ]
>      then
>      echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO DE DESTINO, TENTANDO
>  MONTAR O DESTINO !!!" >> $DIR_LOG/$LOG
>         else
>      echo "DIRETORIO DE "$DESTINO" ENCONTRADO...OK" >> $DIR_LOG/$LOG
>      fi
>     while [ `$MOUNT` == "" ]
>      do
>      echo "TENTANDO MONTAR DIRETORIO" >> $DIR_LOG/$LOG
>      `$MNT_REMOTO`
>         sleep 10
>      done
>  echo "COMPARTILHAMENTO MONTADO...OK" >> $DIR_LOG/$LOG
>  }
>
>  function testes_dir
>  {
>  echo "REALIZANDO TESTES PARA VERIFICAR INCONSISTENCIAS NOS DIRETORIOS"
>  >> $DIR_LOG/$LOG
>
>  ### VERIFICANDO SE OS DIRETORIOS A SEREM REALIZADOS BKP, EXISTE !!!
>  if [ ! -d $ANOTACOES ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $ANOTACOES !!!" >>
>  $DIR_LOG/$LOG
>  else
>      echo "DIRETORIOS "$ANOTACOES" ENCONTRADO ...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $CONF ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $CONF !!!" >> $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$CONF" ENCONTRADO ...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $CONTROLES ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $CONTROLES !!!" >>
>  $DIR_LOG/$LOG
>  else
>      "DIRETORIO "$CONTROLES" ENCONTRADOS ...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $DOCUMENTACAO ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $DOCUMENTACAO !!!" >>
>  $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$DOCUMENTACAO" ENCONTRADO...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $PACKAGES ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $PACKAGES !!!" >>
>  $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$PACKAGES" ENCONTRADO...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $LINUX ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $LINUX !!!" >> $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$LINUX" ENCONTRADO...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $SCRIPTS ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $SCRIPTS !!!" >>
>  $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$SCRIPT" ENCONTRADO...OK" >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $TMP ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $TMP !!!" >> $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$TMP" ENCONTRADO...OK " >> $DIR_LOG/$LOG
>     fi
>
>  if [ ! -d $MAIL ]
>  then
>  echo "ERRO, SCRIPT NÃO ENCONTROU O DIRETORIO $MAIL !!!" >> $DIR_LOG/$LOG
>  else
>      echo "DIRETORIO "$MAIL" ENCONTRADO...OK" >> $DIR_LOG/$LOG
>     fi
>     }
>  function faz_bkp
>  {
>     echo "INICIO DO BACKUP DO DIA "`$DATA`" AS "`$HORA`" " >> $DIR_LOG/$LOG
>     cd $BKP
>     tar zcvf bkp-$DIA.tar.gz $DIRETORIOS
>     echo "O TAMANHO DO BKP FOI DE: `$TAMANHO` " >> $DIR_LOG/$LOG
>     echo " FIM DO BACKUP DO DIA `$DATA` AS `$HORA` " >> $DIR_LOG/$LOG
>  }
>  function cp_server
>  {
>     cd $BKP
>     echo "ENVIANDO BKP PARA SERVER REMOTO" >> $DIR_LOG/$LOG
>     cp -rf bkp-$DIA.tar.gz $PASTA_DESTINO >> $DIR_LOG/$LOG
>     echo "ENVIADO BKP PARA SERVER REMOTO...OK" >> $DIR_LOG/$LOG
>  }
>  ### CHAMANDO AS FUNÇÕES
>  testes_dest
>  testes_dir
>  faz_bkp
>  cp_server
>
>  exit 0
>  ################################################
>  ERROS OCORRIDOS :
>
>  Uso: mount -V : mostra versão
>  mount -h : mostra esta ajuda
>  mount : lista sistemas de arquivos montados
>  mount -l : idem, incluindo rótulos de volumes
>  Estas eram as opções de informação. Agora as de montagem.
>  O comando é `mount [-t tipoSA] alguma-coisa algum-lugar'.
>  Detalhes encontrados em /etc/fstab podem ser omitidos.
>  mount -a [-t|-O] ... : monta tudo contido em /etc/fstab
>  mount dispositivo : monta dispositivo no lugar conhecido
>  mount diretório : monta dispositivo conhecido aqui
>  mount -t tipo disp dir : comando normal de montagem
>  Note que não se monta realmente um dispositivo, monta-se um
>  sistema de arquivos (de um determinado tipo) encontrado no dispositivo.
>  Pode-se montar também em outro lugar uma árvore de diretórios
>  anteriormente visível:
>  mount --bind dir-antigo dir-novo
>  ou mover uma sub-árvore:
>  mount --move dir-antigo dir-novo
>  Um dispositivo pode ser informado pelo nome, digamos /dev/hda1 ou
>  /dev/cdrom,
>  ou por um rótulo, usando -L rótulo ou por uuid, usando -U uuid.
>  Outras opções: [-nfFrsvw] [-o opções] [-p passwdfd].
>  Para mais detalhes, consulte `man 8 mount'.
>  backup.sh: line 40: [: ==: operador unário esperado
>  backup.sh: line 72: DIRETORIO /dados/controles/ ENCONTRADOS ...OK:
>  Arquivo ou diretório inexistente
>  ################################################
>
>  É obvio que eu errei os mount e o laço while, onde testo o mount, bom
>  conto com a análise de vocês, valew pela forca pessoal ! abraços ...
>
>                    



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a