解決策 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 ドル未満で済むことです。