Eu encontrei uma ferramenta chamada "UNISON". é uma ferramenta muito boa e tem muitas opções.
Eu quero comparar dois diretórios, um é local e o outro está em outra máquina.
Como posso fazer isso? Posso fazer isso com diff
?
Eu posso pensar em duas maneiras aqui ...
Monte seu diretório remoto localmente e, em seguida, use diff como faria em uma máquina local.
Use rsync
:
rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir
Isso mostrará os arquivos que são diferentes, mas não mostrará o diff
real. Eu acho que o Unison suporta o diff também, mas eu nunca usei isso e ele não parece estar em desenvolvimento mais.
Se você quer apenas determinar se eles são idênticos ou não, algo como
cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum
... deve fornecer uma soma de verificação única sobre todo o conteúdo (exceto subdiretórios vazios). Então você pode rodar isso nas duas máquinas e comparar as saídas.
Observe que usar diff
exigirá que todo o conteúdo do diretório remoto seja transferido pela rede, o que pode se tornar proibitivamente lento se houver arquivos grandes ou grandes números de arquivos envolvidos.
Minha recomendação seria determinar primeiro quais arquivos diferem entre as duas máquinas (usando rsync -n --delete
( -n
faz com que ele apenas lhe diga o que faria, mas sem fazê-lo; --delete
dirá a você) se houver algum arquivo no destino, mas não na origem, porque ele desejará excluí-lo) ou comparando md5sum
s. Se você está procurando como eles são diferentes (em vez disso do que apenas se forem diferentes), eu usaria diff
apenas nesses arquivos específicos para ver quais são as diferenças.
Sim, você pode fazer isso com o diff! Aplicativos de espaço do usuário como "diff" não sabem (e não precisam saber) se um diretório é local ou remoto.
Tags diff comparison unix aix