ディスクの最初の 512 バイトが削除されました。データを回復するにはどうすればよいでしょうか?

ディスクの最初の 512 バイトが削除されました。データを回復するにはどうすればよいでしょうか?

誤って 512 バイトのバイナリを間違った USB ディスクに書き込んでしまったためdd、デバイスにパーティションが表示されなくなりましたfdisk

すべてのデータが消えたと思っていましたが、幸い最初の 512 バイトに制限されていたdd if=/dev/sdx | stringsため、データはまだ残っているようです。dd回復する方法はありますか??

ディスクには 2 つのパーティションがありました。1 つは ext4 (約 4 GB)、もう 1 つは NTFS としてフォーマットされていました。

答え1

以前何があったかによりますが、これから回復するのは簡単(っぽい)かもしれません。

  1. dd安全な場所に USB ドライブの完全なイメージを作成するために使用します。

  2. dd安全な場所に USB ドライブの完全なイメージを作成するために使用します。

  3. はい、完全なイメージを保存してください。データ復旧操作により、予想以上の損害が発生することがよくあります。

  4. その USB ドライブのパーティション レイアウトがどのようなものであったかを思い出してみてください。それを書き留めディスクが Linux カーネルによって検出されたとき (問題が発生する前) のシステム ログがあれば役立つかもしれません。検出されたパーティションに関するデータが出力されることがよくあります。

  5. fdisk を使用して、同じパーティション テーブルを持つ MBR を再作成します。パーティションをフォーマットしたりfsckしたりしないでください

  6. 読み取り専用 ( -o ro)mountオプションを使用してパーティションをマウントしてみてください。

  7. 成功した場合は、すべてのファイルを安全な場所にコピーし、ターミナルとログで I/O エラーを監視します。パーティション境界エラーが発生する典型的な方法は、基盤となるデバイスでの範囲外のアクセスによって発生します。

  8. コピーが失敗した場合は、イメージを復元して手順 4 に戻ります。

  9. 他の作業を行う前に、USB ドライブの完全なイメージを用意しておく必要があると言いましたか?

PS: 次のようなツールもご覧くださいテストディスク、回復プロセスを自動化しようとします。ただし、最初に完全なイメージを取得する必要があります。

PS2: 十分慣れてきたら、少し実験してみるのもいいでしょう。最初のパーティションの開始点について妥当な仮定を立てることができれば、 を使用してtune2fs -l最初のパーティションの正確なサイズを取得し、2 番目のパーティションの開始点を探すことができます。

答え2

パーティションとそのデータを復元するためにext4、ディスク全体のext4パーティションを1つ作成することを考えました。これにより、データへのアクセス@thkala の提案に従って、でパーティションに関する情報を取得しますtune2fs -l。この情報は非常に実現可能であり、変更されていないように見えます。

非常に興味深いことに、gpartedは、実際のパーティションサイズこの警告からわかることは次の通りです:

パーティション内に 10.96 GiB の未割り当て領域があります。パーティションを埋めるためにファイル システムを拡張するには、パーティションを選択してメニュー項目を選択します。

11GiB は NTFS パーティションのサイズとほぼ同じだったためです。

ここに画像の説明を入力してください

未使用のスペースに注目してください。記憶が正しければ、それはext4にまだ空いていたスペースでした。未割り当て領域gpartedはNTFSパーティションとして認識しているようですが、それを復元するにはどうすればいいですか最初のパーティションが終了する場所、つまり合計バイト数を見つけることではどうでしょうか?


ついにテストディスクそれを難なく処理しました。

関連情報