Agradeço a todos pelas dicas. Todas foram bem úteis até aqui.
Seguindo uma dica de um amigo estou fazendo um diff+ssh para checar se algo
está diferente nestas duas pastas (1 local e 1 remota). O comando peguei no
site "http://www.commandlinefu.com/commands/tagged/32/ssh" e ficou assim:
diff <(cd $DIR_LOCAL; find . -type f -exec md5sum {} \;| sort -k 2) <(ssh
10.10.191.112 'cd $DIR_REMOTO; find . -type f -exec md5sum {} \;| sort -k 2') >
$ARQ_DIFF
if test -s $ARQ_DIFF ; then
echo "A base foi alterada !!!"
echo "Exetutando o RSYNC..."
Rsync <-- Chama funcao Rsync
Mandar_email <-- Chama funcao enviar email
exit 0
else
echo " Nao a alteracao na base"
echo " Nada a ser feito !!"
echo " Saindo..."
exit 0
fi
O problema que estou tendo agora é que não consigo interpretar a variável
$DIR_REMOTO. Ela está dentro dos parâmetros do ssh que serão executados no
servidor remoto e, por isso, não "traduz" para o diretório certo.
Explicando melhor.
A variável $DIR_REMOTO retorna o valor de /home/user/pasta_spare/ mas na linha
do comando diff acima ela não está traduzindo esta variável para
"/home/user/pasta_spare/". Ao invés disso o comando está fazendo um diff entre
a pasta $DIR_LOCAL (que é /home/user/pasta_producao/) e a pasta home do usuário
user (estou rodando o script com ele).
Como fazer para que a variável $DIR_REMOTO seja interpretada corretamente?
________________________________
De: Laercio Motta <[email protected]>
Para: [email protected]
Enviadas: Sábado, 7 de Novembro de 2009 8:02:17
Assunto: Re: [shell-script] Script de RSYNC
bem.. nao sei se existe alguma flag q faça checagem pelo rsync
mais no meu caso eu faço uma lista dos arquivos origem e destino
com list-only mesmo do rsync e depois faço um md5sum para ver o hash
dos 2 arquivos e seguida verifico se a diferença entre os 2 com o diff
espero ter ajudado.. ! =D
2009/11/6 ikami <[email protected]>
>
>
> Senhores(as),
>
> Estou finalizando um script de RSYNC para sincronizar duas bases em
> máquinas diferentes (uma de produção e uma spare).
> A única função que falta nele é uma para verificar se "existe" algo para
> ser sincronizado, ou seja, se a base de produção estiver diferente da base
> spare um alerta será gerado e um email será enviado.
> Minha intenção é rodar o scritpt de 30 em 30 min mas só enviar email para
> os administradores contendo a informação "dos arquivos que foram alterados e
> que serão sincronizados" quando isto acontecer (arquivos alterados). Melhor
> fazer assim do que enviar emails de 30 em 30 min.
> Pois bem, como posso verificar se as bases (1 pasta em cada servidor) dos
> servidores estão sincronas ou não?
> Sei que o rsync faz o sincronismo mas não achei uma opção dele que faça
> somente a 'checagem'. O comando mais próximo que achei foi o "--list-only"
> mas ele é simplismente um "ls -l" tanto para o servidor local quanto para o
> remoto.
>
> Íkami
>
> __________________________________________________________
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: [email protected]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
[As partes desta mensagem que não continham texto foram removidas]