次のコマンドを使用して、深刻な破損した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イメージをインストールできるため、通常どおり破損していないデータにアクセスでき、破損したデータを簡単に削除して次の手順に進むことができます。