Eu tenho dois servidores que devem ter a mesma configuração, exceto por diferenças conhecidas.
Correndo:
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt
Posso encontrar uma lista de todos os arquivos em um servidor e compará-la com a lista de arquivos no outro servidor. Isso me mostrará as diferenças nos nomes dos arquivos que residem nos servidores.
O que eu realmente quero fazer é executar uma soma de verificação em todos os arquivos nos dois servidores e compará-los para descobrir também onde o conteúdo é diferente. por exemplo
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum
Esta é uma maneira sensata de fazer isso? Eu estava pensando que o rysnc já tem a maior parte dessa funcionalidade, mas pode ser usado para fornecer a lista de diferenças?
-print0
vez de-print
e emxargs -0
vez dexargs
. Você evitará problemas causados por nomes de arquivos "ímpares".Respostas:
Você está certo, o rsync é perfeito para isso. Use
--itemize-changes
(aka -i). Certifique-se de poder executar isso como root nos dois lados (ou em algum outro usuário com acesso total à máquina):-a
é para arquivamento e basicamente faz com que o rsync faça uma duplicata exata (além de alguns casos envolvendo links)-n
é para funcionamento a seco e significa que nada será realmente alterado (este é IMPORTANTE! :))-i
é para alterações de itens e gera um formato simples de entender, uma vez que você obtém, mostrando todos os arquivos que precisam ser atualizados (a sintaxe é explicada totalmente na página de manual, com a ajuda detalhada desse gatilho).--delete
faz com que o rsync exclua os arquivos existentes no destino, mas não na fonte.Se você deseja excluir certos caminhos, use comandos como
--exclude /var
. Os padrões de exclusão são relativos ao diretório de origem (que neste caso é /, portanto são efetivamente absolutos).fonte
Você pode investigar o sinalizador -c do rsync. De
man rsync
:Gostaria de deixar um comentário para a resposta de Alex Jurkiewicz, mas não tenho representante suficiente: '(ainda ...
fonte
Uma ferramenta útil que você deve considerar é "rpm -Va". Isso imprimirá uma lista de todos os arquivos compactados que diferem de quando foram empacotados. Isso ignora qualquer arquivo não empacotado, mas é uma maneira muito boa de ter uma idéia dos arquivos que foram alterados desde a instalação, que fazem parte do sistema base. Eles também incluem um sinalizador que informa se eles são considerados arquivos de configuração.
Por exemplo:
Portanto, ".bashrc" e "yum-updatesd.conf" são arquivos de "configuração" que foram alterados em tamanho, hora e soma de verificação MD5. "rdate" teve sua mudança de modo ...
O banco de dados RPM é uma coisa muito útil.
fonte