数日前、ext4 形式のフラッシュ カード上のすべてのメタデータが上書きされました。
どうしてこうなったのか、推測してみます。これは完全に推測です。これは、別のカードを使用した直後に起こりました。カードのボリューム ラベルは、もう一方のカードと同じになりました。そのため、もう一方のカードを抜いたときに、同期/アンマウントに失敗したのではないかと思います。カード リーダーは、カードが抜かれたときにシステムに適切に通知しないため、次にシステムが同期を生成したときに、システムはカードが変更されたことを認識せず、メタデータを上書きしました。
この問題が発生したときに私が最初に行ったことは、dd を使用してイメージを作成することです。次に、イメージを読み取り専用にしました。3 番目に、イメージの書き込み可能なコピーを作成しました。
私は photorec を発見しました。これで一部のデータは復元できましたが、すべてではありませんでした。その理由の 1 つは、非破壊的であるという点だと思います。
復元されたファイルの一部はテキストであるため、photorec はファイル形式に関する情報をほとんど使用していないと思われます。
カードから他のファイルを復元するには、ext2 でファイルがどのように配置されているかを知る必要があります。基本的には、ファイルはブロックに分割され、ブロックはセクターに書き込まれ、次のセクターを見つける方法に関する情報が現在のセクターに何らかの方法で書き込まれていると考えられます。
続行するには、次のセクターへのポインタがどのように書き込まれるかに関する情報が必要です。
PS: photorec コードを読んでいるのですが、読みにくいところがあります。私のせいなのか、コードが醜いのかはわかりません。
PPS: ext ファイル システムのレイアウトに関する情報はいくつか見つかりましたが、基本的なファイル レイアウト情報は見つからないようです。
答え1
PhotoRec はディスク (またはディスク イメージ) をスキャンして、既知のファイル形式に似た連続したバイト チャンクを検索します (たとえば、セグメント ヘッダーによって JFIF/EXIF (JPEG) を認識できます)。非常にシンプルですが、制限があります。
探偵キットはファイルシステムを詳しく調べるのに最適なツールです。少し注意すれば (そしてツールをスクリプト化し、ディスクイメージがおかしくなったら 16 進数で編集すれば)、回復に使用できます。
extをより深く理解するツールについては、ext4マジック? (まだこれを使用する必要がありませんでした。)
Documentation/filesystems/ext2.txt
カーネルソースの一般的な構造の概要は、Ext4 ウィキ良い情報があります。Ext4 ディスクレイアウトより詳細な内容が含まれています(ext[23]にもほぼ当てはまります)。
しかし、ファイルのデータはブロックに分割されています。ext2 では、各ファイルは直接ブロック (データ ブロックへのポインター)、間接ブロック (直接ブロックへのポインターを含む)、二重間接ブロック、三重間接ブロックを含む inode で表されます。バックリンクはないので、データ ブロックの兄弟を見つけるには、まずすべての inode とブロック ポインターをスキャンして所有者を見つける必要があります。