次の方法で、ハードドライブ全体(50GB)のバックアップを作成ssh
しました。
dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
ファイルの整合性をチェックするための最善の方法は何ですかimage.img
、つまり、すべてが正しくコピーされていることを確認する方法は何ですか?
次の方法で、ハードドライブ全体(50GB)のバックアップを作成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
2つのチェックサムが同一であることを確認します。
これは、チェック時にバックアップとオリジナルが同一であるかどうかをテストすることに注意してください。何も変更/dev/hda
せずにファイルシステムをマウントおよびアンマウントする(多くのファイルシステムの最終マウント日付を更新する)ことを含めて、変更したものはすべてチェックサムを変更します。後で整合性を検証する場合は、バックアップ時のディスクのチェックサムをどこかにメモしてください。
/dev/hda
バックアップが行われた以降に変更されたハッシュが一致しません。
darnir&Gilesが述べたように、最善の方法は、バックアップの直後にソースディスクで何かが変更される前に、暗号化ハッシュを実行することです。ただし、それ以降ディスクを使用した場合は、ハッシュが一致しない可能性が高くなります。ディスク上の1バイトを変更しても、完全に異なるハッシュになります。
理想的とは言えませんが、マウントして画像をスポットチェックできます。ディスクイメージがあるシステムで、次のコマンドを実行します(/mnt/disk
存在しない場合、または別の場所を作成する場合は作成します)。
mount -o loop image.img /mnt/disk
その後、中/mnt/disk
を参照して、すべてのファイルを確認できます。イメージ内の重要なファイルのsha1ハッシュをオリジナルと照合して、整合性を確認します。