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


11

次の方法で、ハードドライブ全体(50GB)のバックアップを作成sshしました。

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

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


通常あなたがddをするとき、それは常に完璧です。ただし、いつでもsha1sumを実行して、オリジナルとバックアップのsha1ハッシュを確認できます。
darnir 2012

2
通常常に完璧です。」これは、ネイキッドガンの引用を思い出させます。
スパーホーク2017年

回答:


10

コマンドが正常に終了した場合、バックアップは正しく、ハードウェアの障害(実行する検証に等しく影響する可能性があります)を除きます。ハードウェアに障害があると、後で正しくなくなる可能性がありますが、ほとんどのストレージハードウェアが破損を検出します。

ここで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

2つのチェックサムが同一であることを確認します。

これは、チェック時にバックアップとオリジナルが同一であるかどうかをテストすることに注意してください。何も変更/dev/hdaせずにファイルシステムをマウントおよびアンマウントする(多くのファイルシステムの最終マウント日付を更新する)ことを含めて、変更したものはすべてチェックサムを変更します。後で整合性を検証する場合は、バックアップ時のディスクのチェックサムをどこかにメモしてください。


3
場合は注意することを何でも上の/dev/hdaバックアップが行われた以降に変更されたハッシュが一致しません。
バハマート2012

ハッシュチェックの利点は、偽陰性(画像の記録で発生したエラーが、ハッシュの実行中に偶然に繰り返されるため、障害が発見されない)が天文学的に非常に小さいことです。ハードウェア障害が存在すると、圧倒的にハッシュチェックが失敗します。すでに説明したように、ディスクが変更されている場合は、誤検知のチェックが失敗します。
Steven Lu

@StevenLuいいえ、ハードウェア障害は一様にランダムではないため、相関の可能性はかなり高くなります。特に、RAMエラー(一般的なPCで観察できる最も一般的なハードウェア障害)は特定のビットで発生します。
Gilles「SO-邪悪なことをやめなさい」2014

わかりました、たぶん...このように、大きな塩でハッシュしますが、OPはネットワーク経由で転送していました。TCPにもかかわらず、本質的に信頼性が低いだけです。その上、おそらく、(物理メモリで)同じ正確なアクセスパターンが表示されない可能性があります。
Steven Lu

@Gillesの最初の文に関する説明を求める新しい関連質問
スパーホーク2017年

5

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

理想的とは言えませんが、マウントして画像をスポットチェックできます。ディスクイメージがあるシステムで、次のコマンドを実行します(/mnt/disk存在しない場合、または別の場所を作成する場合は作成します)。

mount -o loop image.img /mnt/disk

その後、中/mnt/diskを参照して、すべてのファイルを確認できます。イメージ内の重要なファイルのsha1ハッシュをオリジナルと照合して、整合性を確認します。


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