2つのRedhat Linuxサーバーを比較するにはどうすればよいですか?


15

既知の違いを除いて、同じセットアップが必要な2つのサーバーがあります。

実行することにより:

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt

1つのサーバー上のすべてのファイルのリストを検索し、他のサーバー上のファイルのリストと比較できます。これにより、サーバーに存在するファイルの名前の違いがわかります。

私が本当にやりたいのは、両方のサーバー上のすべてのファイルでチェックサムを実行し、それらを比較して内容が異なる場所を見つけることです。例えば

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum

これは賢明な方法ですか?rysncはすでにこの機能のほとんどを備えていると考えていましたが、違いのリストを提供するために使用できますか?


2
次回はの-print0代わりに-printとのxargs -0代わりに使用する必要がありますxargs。「奇数」ファイル名に起因する問題を回避できます。
クリスチャン・シウピトゥ2009年

回答:


22

その通り、rsyncはこれに最適です。--itemize-changes(別名-i)を使用します。これを両側でrootとして実行できることを確認してください(または、マシンへのフルアクセスを持つ他のユーザー)。

rsync -ani --delete / root@remotehost:/
  • -a アーカイブ用であり、基本的にrsyncに完全な複製を作成させます(リンクが関係する場合を除く)
  • -n ドライラン用であり、実際に何も変更されないことを意味します(これは重要です!:))
  • -i itemize-changes用で、更新が必要なすべてのファイルを示すわかりやすいフォーマットを出力します(構文については、トリガーの詳細なヘルプの下のmanページで詳細に説明されています)。
  • --delete rsyncに、宛先には存在するがソースには存在しないファイルを削除させます。

特定のパスを除外する場合は、などのコマンドを使用します--exclude /var。除外パターンはソースディレクトリに相対的です(この場合は/なので、事実上絶対です)。


あなたが/ VARを除外した場合はcrontabファイルが保存されている場合は、あなたもおそらくこれ、除外しますDOチェックする必要があります。ただし、/ var / logや/ var / cacheなどを除外する必要があります
ショーンレイフシュナイダー

7

rsyncの-cフラグを調査することもできます。からman rsync

    -c, --checksum              skip based on checksum, not mod-time & size

Alex Jurkiewiczの答えにコメントを残しますが、十分な担当者がいません: '(まだ...


1
このフラグが役立つシナリオがいくつかあります。私が見た中で最も一般的なのは、一定のサイズである何らかの「奇妙な」(通常はバイナリ)形式でデータを保存しているときです。同期の両側でまったく同じ時間に自動プロセスによってファイルが更新された場合(ログのローテーションなど)、rsyncはサイズ/ m-timeだけで同期するときにそれを見逃す可能性があります。確かに可能ですが、かなりまれです。
アレックスJ

mod-timeなどに注意を払わずに比較できるように、ファイルの内容をチェックサムするだけだと思っていましたが、Alexは正しいようです...すべてのメタを無視する良い方法はありますか?データとコンテンツにのみ注意を払う、gitの方法?
iconoclast

4

考慮すべき便利なツールの1つは「rpm -Va」です。これにより、パッケージ化されたときとは異なるすべてのパッケージ化されたファイルのリストが出力されます。これはパッケージ化されていないファイルを無視しますが、インストール後に変更されたファイル、つまりベースシステムの一部を把握するのに非常に良い方法です。また、構成ファイルと見なされるかどうかを示すフラグも含まれています。

例えば:

S.5....T  c /root/.bashrc
S.5....T  c /etc/yum/yum-updatesd.conf
.M......    /usr/bin/rdate
..5....T  c /etc/dbbackup.conf
S.5....T  c /etc/webalizer.conf
SM5....T  c /etc/sysconfig/iptables-config

したがって、「。bashrc」と「yum-updatesd.conf」は、サイズ、時間、およびMD5チェックサムが変更された「構成」ファイルです。「rdate」のモードが変更されました...

RPMデータベースは非常に便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.