
dd を使用してハード ドライブのイメージを作成しようとしていますが、I/O エラーが発生します。その結果、「noerror」パラメータを追加しましたが、回復を試みるためにエラーを追跡したいと思います。
私の現在の試みは次のとおりです。
sudo dd if=/dev/sdb bs=1M conv=sync,noerror of=output.img 2>&1 | tee output.log
これにより、output.img と output.log の両方が作成されますが、両方のサイズは 0 バイトになり、dd を終了してもターミナルに出力はエコーされません。
私は dd に慣れているので、ddrescue などのツールよりも 'noerror' オプションを指定した dd を試してみたいと思います。
また、このドライブには NTFS パーティションが 1 つだけ含まれているため、ビットが欠落している NTFS パーティションを回復する方法を教えていただけるとありがたいです (ドライブは 500 GB で、最初に発生したエラーは 30 GB 付近でした)。
ありがとう!
答え1
ぜひ使ってみてくださいddrescue
- 仕事に適したツールを避けないでください。それを実行するのは難しくなく、ストレスを軽減できます。
呼び出しは簡単です:
ファーストラン:
-p
- スペースを事前に割り当てる-b 4M
- 速度を上げるために大きなセクターサイズを使用する
ddrescue -p -b 4M ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
後続の実行: (とは異なりdd
、複数回実行することができ、ログ ファイルを参照して中断したところから続行されます)
-b 512
- より小さなセクターサイズを使用してギャップを埋める-r 10
- 複数の再試行パスを使用する
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
読み取りエラーのあるセクションには (デフォルトで) ゼロが含まれ、以下のようなログ ファイルが作成されます。
# pos size status
0x00000000 0x00014E00 +
0x00014E00 0x00000200 -
0x00015000 0x00005800 +
0x0001A800 0x00000200 -
0x0001AA00 0x00028000 +
0x00042A00 0x00000200 -
0x00042C00 0x00125400 +
マークされた線+
はエラーのない領域、マークされた線-
はエラーのある領域です。
読み取りエラーの性質に応じて、次のオプションのいくつかを検討する必要がある場合があります。
-d, --direct
use direct disc access for input file
-K, --skip-size=<min>[,<max>]
initial size to skip on read error [64 KiB]
-M, --retrim
mark all failed blocks as non-trimmed
-O, --reopen-on-error
reopen input file after every read error
-r, --retry-passes=<n>
exit after <n> retry passes (-1=infinity) [0]
-R, --reverse
reverse the direction of all passes
あなたの質問に直接答えると:
- おそらくバッファリングの問題が発生しているのでしょう。たくさんの行が一度に表示され、その後何も表示されないことがあります。
unbuffer
sudo
パスワードを要求している可能性がありますが、プロンプトをリダイレクトしたため、何も起こりません。