GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリ間の違いを比較する方法 (linux)

解決策 1:

diff man ページから:

<ブロック引用>

コピー元ファイルとコピー先ファイルの両方がディレクトリである場合、diff は両方のディレクトリ内の対応するファイルをアルファベット順に比較します。 -r または --recursive オプションが指定されない限り、この比較は再帰的ではありません。diff は、ディレクトリの実際の内容をファイルであるかのように比較することはありません。標準入力は名前がなく、「同じ名前のファイル」という概念が適用されないため、完全に指定されたファイルは標準入力ではない可能性があります。

ディレクトリを比較するには:diff --brief -r dir1 dir2

ファイルを並べて比較するには:diff --side-by-side file1 file2

解決策 2:

仮定:

  • 私たちは www1 にいます 、リモート www2 と比較
  • ローカル www1 からの公開 SSH キー認証が構成されています リモート www2
  • ローカルの www1 で同じユーザーとして比較します およびリモート www2
find /var/www/html/ -name "*" -exec md5sum -b {} \; | grep -v "/var/www/html/exclude_this dir" > local.md5
ssh www2 "find /var/www/html/ -name '*' -exec md5sum -b {} \; | grep -v /var/www/html/exclude_this dir > remote.md5"
scp www2:remote.md5 .
diff local.md5 remote.md5 

解決策 3:

rsync のパワーを組み合わせたい diff の力で帯域幅の消費を削減する 柔軟な、ええと、差分を提供します。

このようなもの:

cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/* 
diff -wur $local $bak

rsync を頻繁に使用している場合は、これを少し調整できると思います cp の代わりに 最初の行で-明らかに最後の行で diff のフルパワーを持っています 好きなようにフォーマットします。おそらく OP の場合は y

このアプローチの欠点は、最終的に 2 倍のローカル スペースを使用することになりますが、1 ギグあたり 1 ドル未満で済むことです。


Linux
  1. Linuxでローカルディレクトリとリモートディレクトリを同期する方法

  2. LinuxにリモートWindows共有をマウントする方法

  3. Linuxで2つのファイルの違い(追加のみ)を取得する方法

  1. Linuxでディレクトリの名前を変更する方法

  2. LinuxでリモートMySQL接続を追加するにはどうすればよいですか?

  3. Linuxでディレクトリをループする方法は?

  1. Linuxでディレクトリを移動する方法

  2. LinuxでCでディレクトリを再帰的にリストする方法は?

  3. ssh 経由でディレクトリを比較する方法