ddの復元とエラーの読み取り、数字のスキップ/検索

ddの復元とエラーの読み取り、数字のスキップ/検索

次のコマンドを使用して、深刻な破損したCDからデータをコピーしようとします。

dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress

ただし、「of」デバイスの接続が切断され、ddが停止します(下の出力)。

...
dd: error reading '/dev/sr1': Input/output error
1074889+17746 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s
dd: writing to 'IDT.img': Input/output error
1074889+17747 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s

続行できます。

dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress seek=1092635 skip=1092635

それとも、検索/スキップ数字が両方でなければならないのですか1092636、それともスキップ/検索が異なるのか、それとも完全に異なるのですか?

PSおそらく間違ったコマンドを使用していることを知っています。例えば、ddrescue が良いかもしれません。しかし、私はおそらく今(?)ddに閉じ込められているでしょう。出力ファイルに関してエラーが発生しなくなることが予想されます。

答え1

読み取りエラーが発生するため、これらのオプションはconv=sync,noerrorほとんど確実にデータフローを変更し、残念ながら出力ファイルを無駄にするか、少なくとも不正確なコピーにします。

このオプションは、入力にエラー読み取り(短い読み取り)があるたびにconv=syncブロックをNULバイトで埋めます。コマンドはdd中断された入力ストリームを続行しようとしますが、出力には不明な数のNULバイトが挿入されます。

使用を中止しddて使用する必要がありますddrescue、悪いメディアからデータを回復するために作成されました。

同様のトピックへの回答を参照

答え2

使用救う。破損したメディアを読み取り、破損した部分を「保存」することができますが、ddはそうではありません。

生データを想像してみてください。

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c d e f g h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

損傷後(X)は次のようになります。

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c X X X X h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

dd conv=sync,noerror は以下を読みます:

  +-+-+-+-+-+-+-+-+
  |a b c h i j k l|
  +-+-+-+-+-+-+-+-+

ddrescueが読む内容。

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c 0 0 0 0 h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

ご覧のとおり、ddが読み取った元のメッセージは歪んでおり、このようにファイルシステムイメージを作成すると使用できなくなります。問題なくDdrescueイメージをインストールできるため、通常どおり破損していないデータにアクセスでき、破損したデータを簡単に削除して次の手順に進むことができます。

関連情報