答え1
この問題を正しく解決する方法はほとんどありません。ファイルシステムはddで数百メガバイトを上書きすることはもちろん、小さな部分でも失うことを嫌います。
cmp datasource /dev/target
この場合、私が望むのは、dd出力でisoイメージファイルをディスクデータ(例えば)と比較して、どれだけのデータを上書きしたかを正確に確認することです。次に、確認された欠落セグメントをゼロにします。
例:(使用に応じた責任はあなたにあります。すべての実験をディスク全体のコピーで実行するか、記録中にコピーを上書きする)
# cmp isofile.img /dev/diska
cmp: EOF on isofile.img after byte 68157440, in line 266228
# dd bs=1 count=68157440 if=/dev/zero of=/dev/diska
# cmp isofile.img /dev/diskb
isofile.img /dev/diskb differ: byte 34603009, line 135095
# head -c $((34603009-1)) /dev/zero > /dev/diskb
破損した領域をゼロ化してもデータは復元されません。ただし、これは回復ソフトウェアがブロックサイズとパーティションオフセットについて誤った仮定をするのを防ぎ、興味のないデータを回復するのに時間を浪費するのを防ぐのに役立ちます。有効な画像ファイルからのものなので、有効に見える完全に偽のデータよりもデータがまったくない方が良いです。
今後はぜひバックアップしておいてください。
答え2
私にもそんなことが一度あった。 「TestDisk」を使用してほとんどのファイルを修復しました(エラーを認識するとddが停止しました)。詳細な説明があります。ここ失われたファイルを回復する方法について