2つのブロックデバイスを比較できるユーティリティ(またはシェルマジック)はありますか?
詳細:ddを使用して少し大きいSATAデバイスにバックアップした1つの大きな(0.5 TB)RAIDデバイスがあります。デバイスにはいくつかのパーティションがありますが、パーティション化されたデバイスノードではなく、「親」デバイスからコピーします(たとえば、/ dev/hda1ではなく/ dev/hdaをコピーします)。
バックアップが適切/正しいことを確認したいと思います。
各デバイスでmd5sumを実行することを検討しましたが、2番目のデバイスが最初のデバイスよりわずかに大きいため、余分なバイトによってハッシュが変更されるため、正確な結果は得られません。
コマンドを使用します
cmp /dev/hda /dev/hdb
最初の異なるバイトで停止し、そのオフセットを書き込むか、短い方のEOFで停止します。
ドライブの実際の容量によっては、ファイルシステムをマウントして実行するのが最も速い場合があります。
diff -qr /mnt/root1 /mnt/root2
そうでなければ、私はこのようなことを言うでしょう:
diff -q <(dd bs=1M count=500K if=/dev/sda) <(dd bs=1M count=500K if=/dev/sdb)
明らかに、bs
とcount
を、より小さなドライブの終わりで(または、はるかに便利な場合は直前に)停止させるために、どれだけ大きくする必要があるかを理解してください。
または、enzotibのコメントのおかげで、cmp
を使用できるように見えますが、-n
フラグを使用して、2つのドライブの短い方のバイト数を制限する必要があります。
cmp /dev/sda /dev/sdb -n 500GB
次のようにmd5sum
を使用して、2つの異なるサイズのブロックデバイスを比較できます。
(より小さいデバイスが/dev/sda
であると想定)
# md5sum /dev/sda && head -c $(blockdev --getsize64 /dev/sda) /dev/sdb | md5sum
バックアップでfsck
を実行することを検討してください。バックアップに埋め込まれたパーティションにループバックデバイスを設定するには、losetup
を使用していくつかのトリックを実行する必要がある場合がありますが、ファイルチェックでファイル構造が一貫している場合、データ自体は適切である可能性があります。
完全なチェックサムが必要な場合は、オフセット付きのループバックデバイスを使用して、バックアップの内部「パーティション」とmd5sumをそれぞれ個別に調べることができますが、強制fsck
を使用すると、バイト比較またはチェックサム計算。