2つのディレクトリを比較したいと思います。1つはローカルで、もう1つは別のマシンにあります。
どうやってやるの? diff
でそれを行うことはできますか?
「UNISON」というツールを見つけました。これは非常に優れたツールであり、多くのオプションがあります。
ここでは2つの方法が考えられます。
リモートディレクトリをローカルにマウントしてから、ローカルマシンで行うのと同じようにdiffを使用します。
rsync
を使用します:
rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir
これにより、異なるファイルが表示されますが、実際のdiff
は表示されません。 nison diffもサポートしていると思いますが、使ったことがなく、開発中のようです。
それらが同一であるかどうかを判断したいだけの場合は、
cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum
...コンテンツ全体(空のサブディレクトリを除く)に対して単一のチェックサムを提供する必要があります。したがって、これを両方のマシンで実行して、出力を比較できます。
diff
を使用すると、リモートディレクトリの内容全体をネットワーク経由で転送する必要があり、大きなファイルや多数のファイルが関係している場合、非常に遅くなる可能性があることに注意してください。
最初に、2台のマシン間でどのファイルが異なるかを判断することをお勧めします(rsync -n --delete
(-n
を使用すると、実際には何もしないで、何をするかだけがわかります; --delete
宛先にファイルが存在するが、ソースには存在しないかどうかを通知します。ファイルを削除する必要があるためです)、またはmd5sum
sを比較します。方法を探している場合それらは異なります(ifが異なるだけでなく)、次にdiff
それらの特定のファイルでのみ、違いが何であるかを確認します。
はい、あなたはdiffでそれを行うことができます! 「diff」などのユーザースペースアプリケーションは、ディレクトリがローカルであるかリモートであるかを認識しません(そして知る必要はありません)。