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