ddrescue は cat --generate-mode 以降の部分イメージにマッピングファイルを生成します。

ddrescue は cat --generate-mode 以降の部分イメージにマッピングファイルを生成します。

1TB(931.5G)ハードドライブがあります。私はそうしました:

sudo sh -c 'cat /dev/sdf >disk_1t.img'

しかし止まった読み取りエラー908G。

私の考えでは、次のステップ(最初のステップでなければならない)はgnuを使用することですddrescue。問題は私がいないということです。マップファイル。質問:

ㅏ)既存の画像が損傷する危険がありますか--generate-mode

ddrescue -n --generate-mode /dev/sdf disk_1t.img disk_1t.map

推測-nオプションは、最初の実行に最適です。休暇があれば教えてください。

私が正しく理解したら、908Gから読み始めますか?

ディスク全体の再読み込みを開始したくありません。

2)最後のバイトが破損している場合は、907.5Gで読み取ろうとすることは意味がありますか?catとにかく悪いデータが記録されますか?可能であれば、問題の原因となる可能性がある2Gをスキップして910Gから読み始めるのが良いでしょうか?その後、後で実行するときに908-910を実行します。

氏)残りの23.1Gを読んだり/試したり/使い切った後に最初の908Gを確認する方法はありますか?


既存の画像の尾は次のとおりです(存在する場合)。

$ tail -c 512 disk_1tb.img | xxd
00000000: b481 e803 8733 0000 5801 b454 6e3a 9e51  .....3..X..Tn:.Q
00000010: 4cc8 4851 0000 0000 e803 0100 2000 0000  L.HQ........ ...
00000020: 0000 0000 0000 0000 9314 260b 9414 260b  ..........&...&.
00000030: 9514 260b 9614 260b 0000 0000 0000 0000  ..&...&.........
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000060: 0000 0000 817a 168b 0000 0000 0000 0000  .....z..........
00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000080: 1c00 0000 0000 0000 0000 0000 c8e9 3caa  ..............<.
00000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000100: b481 e803 b650 0000 7300 b454 6e3a 9e51  .....P..s..Tn:.Q
00000110: 879d c950 0000 0000 e803 0100 3000 0000  ...P........0...
00000120: 0000 0000 0000 0000 9714 260b 9915 260b  ..........&...&.
00000130: 9a15 260b 9b15 260b 9c15 260b 9d15 260b  ..&...&...&...&.
00000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000160: 0000 0000 827a 168b 0000 0000 0000 0000  .....z..........
00000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000180: 1c00 0000 0000 0000 0000 0000 f0cc 5056  ..............PV
00000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

答え1

あなたの場合、実際にマッピングファイルを生成する必要はありません。オフセットを正確に知っているので、入力位置に渡すことができます。 (疑わしい場合は、入力位置を少し小さく設定してください。大きく設定すると間隔が残ります。ddrescueそうでないと見なされるため、単位を正しく指定する必要があります。)GGBGiB

ddrescue --min-read-rate=1MiB \
         --input-position=900GiB \
         /dev/sdx sdx.img sdx.map

マップファイルは次のような結果を生成します。

#      pos        size  status
0x00000000  0xE100000000  ?

0-900GiB領域を表示するには?後で考えてみてください。--input-position周辺パラメータを引き続き使用する限り、その領域ddrescueは単に無視され、残りの部分のみが処理されます。

前のセクションが完全にコピーされたと確信している場合は、これを行うことができます。エラーを無視したり、オフセットを変更してデータの破損を引き起こす可能性がある素晴らしい操作を実行しない限り(例dd conv=noerror,sync

心が変わり、最初の900GiBを読み直すには、この--input-positionパラメータを削除します。


既存の画像が損傷する危険がありますか--generate-mode

一般的に言って、ddrescue間違ったことをするには努力が必要です。ddrescueイメージファイルは、誤ったソースデバイスを使用するか(間違ったデータをコピーして破損した場合)、誤ったオフセットを使用するように作成した場合(正しい場所に正しいデータをコピーして破損した場合)にのみ破損します。画像ファイルにデータパターンを作成する--output-positionもう少し異なる方法がありますが、--fill-mode実際に使用するには多くの努力が必要です。

私が正しく理解したら、908Gから読み始めますか?

生成モードでは、ddrescueイメージファイルがどのように作成されたか(ddrescueを介​​して、ddを介して、他の手段を介して)不明であるため、以前はバイナリゼロ領域をスキップした可能性があると仮定します。したがって、ディスクにすべてのデータがゼロの領域がある場合は、その領域を再読み込みし、ゼロ以外のデータがある領域のみをスキップしようとすることができます。

理論的には、データを含むすべての部分を再度読み取らないと時間が節約されますが、マップを作成するには最終的にイメージファイルのすべてのデータを読み取る必要があるため、実際にはソースドライブがある場合は再起動するよりも高速です。が速いです。遅い(損傷による)。

要点--generate-modeは、時間を節約するのではなく(作成に時間がかかります)、失敗したソースドライブの過度の作業を防ぎ、以前にどのデータセグメントがコピーされたかわからない場合に回復を容易にすることです。

最後のバイトが破損している場合は、907.5Gで読み取ろうとすることは意味がありますか?

あなたの場合はまったく必要ありません。技術的には、以前にコピーした個々のセクタを再度読み取るのではなく、中断した部分から続けることができます。ただし、(あなたのように)エラーを無視しない限り、既存の画像dd conv=noerror,syncに損傷を与えないでくださいcat

残りの23.1Gを読んだり/試したり/使い切った後に最初の908Gを確認する方法はありますか?

これを使用して、cmp2つのファイルまたはブロックデバイスを比較できます。

cmp /dev/sdx sdx.img

これはオフセットでも実行できます。

cmp --bytes=64M /dev/sdx sdx.img 900G 900G

ただし、データはドライブが読み取り専用でアクセスされている場合にのみ一致します。自動マウントされたものがあれば、ファイルシステムのメタデータが変更されます。

したがって、理論的には、cmp第1世代908Gとの違いを感じることはできませんが、実際には無効にしにくい様々な自動機能が多くのディストリビューションに提供されるため、実際にはこのようなことが常に発生します。

関連情報