Como saber quais arquivos são diferentes em dois servidores

0

aqui podemos ver que md5sums destes dois diretórios são diferentes, como saber se as estruturas de pastas ou alguns arquivos determinados são o motivo dessa diferença?

[skynet]~> ssh evn-web04 'find  /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \; |sort -k 34 | md5sum'


Ubuntu 14.04.4 LTS evn-web04.tumo.lab ssh-pty

f247a2e41cf54f14cefe83b8872ae862  -

[skynet]~> ssh evn-web03 'find  /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \; |sort -k 34 | md5sum'
Ubuntu 14.04.4 LTS evn-web03.tumo.lab ssh-pty

53413a49fb754210666f4292e8b9ee14  -
    
por Edik Mkoyan 17.03.2016 / 13:16

3 respostas

1

Gere a lista de arquivos em um servidor e verifique no outro. Repita com os servidores na ordem inversa e agrupe as listas.

Primeiro, reúna uma lista de arquivos e seus hashes correspondentes no evn-web04:

ssh evn-web04 'find  /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \;'

Em segundo lugar, passe isso para o mesmo utilitário hash em evn-web03, passando --check e filtre por qualquer coisa que não seja idêntica:

ssh evn-web04 'find  /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \;' | \
ssh evn-web03 "md5sum --check - | grep -vE ': OK$'"

Isso fornecerá uma lista de arquivos que:

  • existem no evn-web04, mas não existem no evn-web03 ou
  • existem em evn-web04 e são diferentes entre evn-web04 e evn-web03

Para obter uma lista completa de diferenças, você também precisa reverter a ordem do servidor (porque arquivos podem existir em evn-web03 que não existem no evn-web04, que o acima não vai pegar como está). Apenas execute os mesmos comandos novamente, mas coloque os lugares de troca dos nomes dos servidores.

    
por 17.03.2016 / 13:36
1

O seguinte one-liner serve:

diff <(find /path/to/dir -type f -exec su -c 'echo -n {}; md5sum {}' \;) \
 <(ssh me@remote find /path/to/dir -type f -exec su -c 'echo -n {}; md5sum {}' \;)

Muitas vezes é subestimado que este tipo de tarefas pode ser realizado com um único comando, graças à substituição do processo.

    
por 17.03.2016 / 13:40
1

Meu primeiro pensamento foi usar

rsync ... --dry-run path user@remote:/path 

Da página do manual

-n, --dry-run               perform a trial run with no changes made

O Rsync informaria todos os arquivos que são diferentes

    
por 17.03.2016 / 16:23