web-dev-qa-db-ja.com

2つのディレクトリを比較するにはどうすればよいですか。1つはリモートディレクトリです。

2つのディレクトリを比較したいと思います。1つはローカルで、もう1つは別のマシンにあります。

どうやってやるの? diffでそれを行うことはできますか?

8
Eng Al-Rawabdeh

「UNISON」というツールを見つけました。これは非常に優れたツールであり、多くのオプションがあります。

0
Eng Al-Rawabdeh

ここでは2つの方法が考えられます。

  1. リモートディレクトリをローカルにマウントしてから、ローカルマシンで行うのと同じようにdiffを使用します。

  2. rsyncを使用します:

rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir

これにより、異なるファイルが表示されますが、実際のdiffは表示されません。 nison diffもサポートしていると思いますが、使ったことがなく、開発中のようです。

4
Hari Menon

それらが同一であるかどうかを判断したいだけの場合は、

cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum

...コンテンツ全体(空のサブディレクトリを除く)に対して単一のチェックサムを提供する必要があります。したがって、これを両方のマシンで実行して、出力を比較できます。

3
Olaf Klischat

diffを使用すると、リモートディレクトリの内容全体をネットワーク経由で転送する必要があり、大きなファイルや多数のファイルが関係している場合、非常に遅くなる可能性があることに注意してください。

最初に、2台のマシン間でどのファイルが異なるかを判断することをお勧めします(rsync -n --delete-nを使用すると、実際には何もしないで、何をするかだけがわかります; --delete宛先にファイルが存在するが、ソースには存在しないかどうかを通知します。ファイルを削除する必要があるためです)、またはmd5sumsを比較します。方法を探している場合それらは異なります(ifが異なるだけでなく)、次にdiffそれらの特定のファイルでのみ、違いが何であるかを確認します。

1
Dave Sherohman

はい、あなたはdiffでそれを行うことができます! 「diff」などのユーザースペースアプリケーションは、ディレクトリがローカルであるかリモートであるかを認識しません(そして知る必要はありません)。

0
jman