dd
または、他のアプリケーションには、おそらく考えている意味で「何らかの組み込みの検証」がありません。つまり、書き込まれたものと比較するために記憶媒体からデータを読み戻しません。それがオペレーティングシステムの仕事です。
アプリケーションからハードウェアまで読み取り検証を行うことは実際には不可能です。一部のシナリオでは機能しますが、ほとんどの場合、何も達成されません。アプリケーションは、ストレージメディアに直接書き込む場合、書き込んだ内容を読み戻すことができますが、通常はメモリ内キャッシュから読み戻すため、有用な保証はありません。では、あなたが引用例、dd
パイプへの書き込みをされ、その場合には、さらにラインの下のデータに何が起こるかを制御することはできません。rsyncの例では、2番目のパスrsync --checksum
理論上はエラーをキャッチできますが、実際には、エラーが発生した場合、2回目のパスはおそらく何も間違って報告しないので、実際に有用な保証を与えないものに労力を費やしています。
ただし、アプリケーションは、オペレーティングシステムがデータに対する責任を受け入れたことを検証するという意味で、データに何が起こるかを検証します。すべてのシステムコールはエラーステータスを返します。システムコールがエラーステータスを返す場合、アプリケーションは一般にエラーメッセージを表示し、ゼロ以外の終了ステータスを返すことにより、そのエラーをユーザーに伝達する必要があります。
dd
ただし、例外であることに注意してください。コマンドラインパラメーターによっては、dd
一部のエラーを無視する場合があります。これは非常に珍しいことですdd
。このプロパティを持つ唯一の共通コマンドです。cat
代わりにを使用してくださいdd
。そうすれば、破損の危険がなくなり、高速になります。
データコピーのチェーンでは、2種類のエラーが発生する可能性があります。
- 破損:転送中にビットが反転します。アプリケーションレベルでこれを確認する方法はありません。それが発生した場合、それはプログラミングバグまたはハードウェアエラーが原因であり、リードバック時に同じ破損を引き起こす可能性が高いからです。そのような破損が発生していないことを確認する唯一の有用な方法は、メディアが物理的に切断され、RAMに問題がある場合に別のコンピューターで再試行することです。
- 切り捨て:コピーされたすべてのデータは正しくコピーされましたが、一部のデータはまったくコピーされませんでした。この1は、あるコマンドの複雑さに応じて、時々チェックする価値。そのためにデータを読み取る必要はありません。サイズを確認するだけです。