ddバックアップの整合性を確認する方法は?

ddバックアップの整合性を確認する方法は?

次の手順でハードドライブ全体(50 GB)をバックアップしましたssh

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

今ファイルの整合性を確認する最良の方法は何ですかimage.img?つまり、すべてが正しくコピーされたことを確認する方法は何ですか?

答え1

コマンドが正常に終了すると、ハードウェアエラー(実行可能なすべての確認に再び影響を与える)がない限り、バックアップは正しいです。ハードウェアに障害が発生すると、後で不正になる可能性がありますが、ほとんどのストレージハードウェアは損傷を検出します。

これには注意事項があります。パイプラインでは、シェルは左側にエラーを報告しません。 (これは右側がすべてのデータを読み取る必要がない非常に一般的な状況によるものです。たとえば、some_command | head左側は出力が不要になるために死にます。)したがって、ここで読み取りエラーはdd無視されます。 Bashでpipefailパイプラインのすべての部分に関するエラーを報告するオプションを設定します。

また注意事項dd bs=…いくつかのエラーを無視そしてdd一般的に代替より遅い。まったく使用しないことをお勧めしますdd。ファイル全体をコピーするだけでは利点はありません。どこかで読み取ったのとは異なり、ddこれは特別な属性を持つ低レベルのディスクアクセスコマンドではなく、魔法はまったくありません。dd魔法はにあります。/dev/hda

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

それでもバックアップを確認するための最善の方法は、両方の暗号化チェックサムをインポートして比較することです。たとえば、

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

両方のチェックサムが同じであることを確認してください。

確認時にバックアップファイルと元のファイルが同じかどうかをテストするので注意してください。ファイルシステムのマウントやマウント解除など、で変更した内容はすべて/dev/hdaチェックサムを変更します。変更しなくても(多くのファイルシステムで最後にマウントされた日付が更新されます)、チェックサムは変更されます。後で整合性を確認したい場合は、バックアップ時にディスクのチェックサムをどこかに書き留めます。

答え2

darnirとGilesが述べたように、最良の方法は、ソースディスクを変更する前にバックアップの直後に暗号化ハッシュを実行することです。ただし、それ以降にディスクを使用した場合、ハッシュが一致しない可能性が高くなります。ディスク上で1バイトだけを変更しても、ハッシュ値が完全に異なる場合があります。

理想的ではありませんが、インストールによって画像を部分的に確認できます。ディスクイメージを含むシステムで次のコマンドを実行します(/mnt/disk存在しない場合は代替場所を作成または使用します)。

mount -o loop image.img /mnt/disk

/mnt/diskその後、すべてのファイルを参照して表示できます。画像内の重要ファイルのsha1ハッシュを元のファイルと比較して、整合性を確認してください。

答え3

qemu-img コマンドを使用します。

qemu-img check image.img

関連情報