ddはどのような検証を実行しますか?

ddはどのような検証を実行しますか?

私はdd既存のハードドライブから新しいハードドライブにデータをコピーするために使用します。データの整合性が安全であることを確認したいと思います。

これに関して回答、ザイルズは言った

[dd]が正常に終了した場合、ハードウェアエラーではなく、バックアップは正しいものです。

これは正確に何を意味しますか?dd一種の組み込み検証がありますか?

rsyncを使用するには、--checksum2番目のパスを実行して確認する必要があります。この妄想は正当ですか?

ベストアンサー1

ddあるいは、他のアプリケーションには考えているように、「ある種の組み込み検証」はありません。記録された内容と比較するために、記憶媒体からデータを再読み込みしないでください。それがオペレーティングシステムの役割です。

アプリケーションでハードウェアの読み取り確認を実行することは事実上不可能です。場合によっては効果がありますが、ほとんどの場合効果はありません。アプリケーションは、作成したばかりの内容を再読み込みできます。保存媒体に直接書き込む場合しかし、これは通常メモリキャッシュから再度読み取られるので、有用な保証を提供しません。存在するあなたが引用した例ddパイプに書き込んでおり、この場合、次のデータに何が起こるかを制御することはできません。 rsyncの例では、2番目のパスrsync --checksumは意味がありません。理論的にはエラーをキャプチャしますが、実際にはエラーが発生した場合、2番目のパスでエラーを報告しない可能性があるため、実際に努力を無駄にすることです。有用な保証は提供されません。

しかし、申請はするデータに何が起こったかを確認します。つまり、オペレーティングシステムがデータに対する責任を受け入れたことを確認します。すべてのシステムコールはエラー状態を返します。システムコールがエラーステータスを返す場合、アプリケーションは通常エラーメッセージを表示し、ゼロ以外の終了ステータスを返すことによってユーザーにエラーを伝播する必要があります。

これはdd例外です。コマンドライン引数に応じてdd一部のエラーは無視される可能性があります。。これは非常に珍しいケースです。ddこの属性を使用する唯一の共通コマンドです。損傷の危険を避けるためにcat代わりに使用してください。ddそれが速いかもしれません。

データ複製チェーンでは、2 種類のエラーが発生する可能性があります。

  • 破損:転送中にビットが反転しました。これが発生すると、プログラミングエラーやハードウェアのバグが再読み込みされたときに同じ破損が発生する可能性が高いため、アプリケーションレベルでこれを確認する方法はありません。そのような損傷が発生していないことを確認する唯一の有用な方法は、メディアを物理的に切断して再試行することです。 RAMに問題がある場合は、可能な限り別のコンピュータで試してください。
  • 切り捨て:コピーされたデータはすべて正しくコピーされますが、一部のデータはまったくコピーされません。これはいコマンドの複雑さによって確認する価値がある場合もあります。このためにデータを読み取る必要はありません。サイズだけを確認してください。

おすすめ記事