CDからデータファイルを読み込むと、非常に奇妙な動作が発生します。 CDから同じファイルのコピーを複数作成すると、データが一致しません。理由がわかりません(読み取りエラー通知がなく、他のCDは同じデバイスでうまく機能します)。
エラーは毎回異なる場所で発生するため、ファイルのコピーを複数作成し、ほとんどのコピーが同意する値を取ると、これらのエラーを修正できるようです。
ddrescueを試してみましたが、エラーを検出できませんでした(間違ったデータを取得しましたが、エラーを検出できませんでした)。しかし、ddrescueが読み取ったデータを調べると、明らかに不一致が見つかります。
それでは、ddrescue(または他のツール)を使用してコピーされたデータをチェックしてこのCDのファイルを回復し、各バイトの正しい値が何であるかを推測するために必要なだけコピーを繰り返すことができますか?
ありがとうございます!
答え1
ハードウェアを確認してください
良い解決策はありませんが、通常、CD-ROMから読み取られたデータが毎回異なる場合、CDにECCが含まれているため、問題は、欠陥のあるCDの実際の問題よりもハードウェアの問題のように聞こえます。言い換えれば、セクタを読み取ることもできないかもしれません。読み込めば安定したデータを表示します。
一部のオペレーティングシステムでは、先読み(バックグラウンドで完了)中に読み取りエラーが発生した後に任意のデータを配布できるため、このddrescue
オプションを使用してソースにアクセスすることもできます。-d
他のコンピュータのハードウェアを共有していない別のコンピュータを試して、まだこの混乱の結果が表示されていることを確認してください。
ddrescue
ただし、注意してください:読み取りエラーがある場合は、ソースの他の部分が回復する可能性があるため、2回実行すると2つの異なるイメージが生成される可能性があります。 (作成した内容にエラーはありません。オプションが異なる場合があります-d
。)
ddrescue
画像を比較するツール
欠陥のあるハードウェアの問題を解決でき、他の画像を抽出することなく画像をソースと再比較したい場合は、私のツールを試してみてください。ddrescue-verify
違いを診断します。
ddrescue-verify
ソースコードのみが含まれているので(おそらくLinuxのみ)、開発/ビルドシステムの使い方を知っておく必要があります。
現在、ddrescue-verify
使いやすい診断ツールとして設計されていません。これは、遅いネットワークリンクを介して画像が正しく取得されたことをすばやく確認できるように設計されているため、画像全体が遅い回線を介して複数回送信されるのを待つことができない状況で使用されます。
の既存の文書が不足している場合は、もはやお手伝いできddrescue
ませddrescue-verify
ん(時間がありません。申し訳ありません)。私ができる唯一のことは、以下から抜粋したものです。ウィキペディアあなたのニーズに適応できることを願っています。
ソースからイメージを生成する元のコマンドは次のようになり、現在の作業ディレクトリで実行されます。
ddrescue -d /dev/source image.img image.log
これで検証データを生成します。
ddrescue-verify image.img image.log > image.verify
今すぐ確認/比較プロセスを実行してください。
ddrescue-verify -udis0 /dev/source image.verify > image.diff
これは、読み取れないとマークされた部分ddrescue-verify
(したがってオプション)をスキップするため、高速です。source
image.log
-d
出力によって違いがわかります。
image.diff
違いも見ることができます。このファイルはログファイルと同じ形式を持ちddrescue
、違いは「未読」と表示されるため、使用できますddrescuelog
。
可能:違いを画像にインポートする
違いを取り除くには、次のこともできます。
# The next 2 commands take a snapshot of your original image
# Probably use lvm or ZFS snapshot to not duplicate all data:
cp image.img image.orig.img
cp image.log image.orig.log
# Now pull in the differences
cp -f image.diff image.log
ddrescue /dev/source image.img image.log
これで見つかった変更をimage.img
更新しました。image.log
変更された部分だけを読み取ろうとするので速度が速いです(デフォルトでは1MBごとに違いが検出され、もう少しコピーします)。
注:この最後のステップは、必要なだけプロセス全体を繰り返すように設計されています。
これは完全な解決策ではありません。
完璧なソリューションを提供できないことを申し訳ありません。しかし、不明瞭な状況でデータを回復することを推測することには問題がなく、すぐに機能します。
ただし、違いを比較して抽出する方法と組み合わせたスナップショット(LVMよりはるかに高速なZFSまたはBTRFSをお勧めします)を使用すると、何が正確で間違っているかを判断できます。