ファイル削除とデータ復元の仕組み

デジタルデータの消失は、個人ユーザーにとっても企業にとっても大きな問題です。うっかり削除してしまったファイルが復元できるケースも多くありますが、その背景にはファイルシステムの構造や動作の特性が関係しています。本ページでは、データがどのように保存され、削除されるかというファイルシステムの仕組みを踏まえながら、なぜ削除されたデータが復元可能なのかを詳しく解説します。

また、MacやSSDやスマートフォン(Android, iOS)においてこれらの仕組みが通用せず、復元が困難な理由として、TRIMコマンド、ウェアレベリング、Secure Eraseなどの関連技術やHDDとの比較についても取り上げます。

削除したファイルが復元できる仕組み:ファイルシステムのメカニズムから読み解く

第1章:ファイルシステムとは何か?

1-1. ファイルシステムの役割

ファイルシステムとは、ストレージ(HDDやSSD、USBメモリなど)上のデータを効率よく管理するための仕組みです。OSがストレージ上のデータを読み書きする際の仲介役として機能し、データの配置、名前の付与、アクセス制御などを代わりに行っています。

1-2. 主なファイルシステムの種類

代表的なファイルシステムには、以下のようなものがあります:

  • FAT32:従来の Windows やメモリーカード等
  • NTFS:現行の Windows 用
  • APFS:現行の Mac / iOS 用
  • EXT3 / EXT4:Linux / Android 向け

第2章:ファイルが保存される仕組み

2-1. データの物理的な格納方法

ファイルはストレージを「クラスタ」や「ブロック」と呼ばれる物理的な最小単位に分割されて保存されます。ファイルシステムはこれらの単位を管理し、どのクラスタにどのファイルが保存されているかを後述のメタデータに記録します。

2-2. メタデータの存在

ファイルの「本体データ」以外に、その名前、作成日時、更新日時、属性、格納先ブロック番号などの「メタデータ」が存在します。これらはファイルシステム内の特定領域に本体データとは独立して記録されており、エクスプローラー上でファイルの新規作成や名称変更、コピー、移動などを行う処理とは、つまりこのメタデータを読み取り、書き換える処理のことを言います。

FAT系ファイルシステムでは「FAT(File Allocation Table)」という表が存在し、どのクラスタにデータが存在しているか(ポインタ)が記録されています。NTFSやEXT4などでも同様の構造が存在し、ブロックやインデックスノード(inode)でデータの構成を管理しています。

この「メタデータ」と「本体データ」の関係は、本の「目次」と「本文」の関係に似ています。つまり、読者が読みたい本文そのものは本の中のどこかに書いてあるとしても、そのページに辿り着くには目次に目を通して何ページ目の第何章なのかを見つけなければならないということです。


第3章:削除処理の実際の挙動

3-1. 削除は“目次”の削除

多くのファイルシステムでは、削除操作とは「本体データ」を消去するのではなく、ファイルシステム上の「インデックス(メタデータ)」を削除または無効化する処理にすぎません。そのため、削除直後であればストレージ上にデータの実体が残っており、適切な手段を用いれば復元できる可能性があります。


3-2. NTFSにおけるファイル削除の仕組み

Windows系OSで使われるNTFS(NT File System)はマスターファイルテーブル(MFT)と呼ばれるデータベースにファイルのメタデータ(ファイル名、タイムスタンプ、データの格納場所など)を保持しています。ファイルを削除すると、NTFSでは対応するMFTレコードが「未使用」とマークされ、当該ファイルに割り当てられていたクラスタが解放されたと記録されます。しかしMFTレコード自体や実データのクラスタ内の記録情報は直ちに消去はされません。

実際、削除後のMFTレコードをバイナリエディタで見ると、ファイル名やタイムスタンプ、データへのポインタ(ファイルがどのクラスタにあるかを示す情報)は削除前と変わらず残っています。変化があるのは「このレコードは削除済み」というフラグが立てられる程度で、NTFSではこのフラグによりファイルを論理的に削除状態にしています。つまり、ユーザーからは見えなくなりますがファイルの記録(インデックス)とデータ本体は削除直後には依然ストレージ上に残存しているということです。


3-3. FAT32におけるファイル削除の仕組み

FAT32(および古いFAT16/FAT12)はシンプルな構造のファイルシステムで、ファイルの所在はディレクトリエントリとファイル割り当てテーブル(FAT)によって管理されています。FAT32でファイルを削除すると、そのファイルのディレクトリエントリの先頭バイトが特殊な値(0xE5)に書き換えられ、「このエントリは空(削除済み)」であることを示します。同時に、そのファイルが使用していたクラスタ番号のチェーンがFATから削除(各クラスタエントリが解放)されます。

重要な点は、NTFS同様にデータ本体が書かれているセクタ自体には変化がないことです。ディレクトリエントリ上にはファイルサイズなどがそのまま残ります(ファイル長は4バイトで保持され、削除時も維持されます)。


3-4. ext4におけるファイル削除の仕組み

Linuxで広く使われるext4ファイルシステムは、堅牢性のためジャーナリング機能を備えています(ext3も同様)。ext4ではファイルやディレクトリはinode(アイノード)という構造体で管理され、inodeにファイルの属性やデータブロックへのポインタ(ext4ではエクステントと呼ばれる連続ブロックの情報)が含まれています。ext4でファイルを削除すると、まずジャーナルにその操作が記録され、一段落すると該当ファイルのinodeが消去(クリア)されます。具体的には、inodeがフリービットマップ上で未使用とマークされ、inode内部のデータブロックへの参照(ポインタ)がゼロクリアされる実装になっています。さらにディレクトリから当該エントリ(ファイル名→inode番号の対応)が削除されます。

ext4では、この削除処理によってファイルのサイズやデータブロック位置の情報が格納されたinodeの中身が消去されてしまうため、NTFSやFAT32のようにメタデータを辿ってファイル内容を復元することが原理的に難しくなっています。つまり、削除と同時にファイルシステム内の索引情報は完全に破棄される設計です。


3-5. APFSにおけるファイル削除の仕組み

AppleのAPFS(Apple File System)は、macOSやiOSで採用されている新しいファイルシステムです。APFSの大きな特徴はコピーオンライト(Copy-on-Write, CoW)方式のメタデータ管理と、効率的なスナップショット機能、そしてデフォルトでの暗号化サポートです。

APFSではファイル削除時に、従来のファイルシステムのようにインデックスを即座に削除するのではなく、まずメタデータのコピーを作成し変更を加えることで古いメタデータへの参照を断ち、新しい状態(当該ファイルが存在しないディレクトリ)を記録します。簡単に言えば、APFSでは削除操作も含めあらゆるメタデータ更新がコピーオンライトで行われるため、削除されたファイルのディレクトリエントリやファイル記録は、新たに書き込まれたメタデータによって参照されなくなります。その結果、削除されたファイルのデータブロックは未使用ブロックとして解放され、ユーザーからもシステムからも削除したファイルは見えなくなります。


第4章:データが復元できる理由

以上の各ファイルシステムの挙動から共通して言える重要な点は、「削除」イコール「即データ本体の消去」ではないということです。多くのファイルシステムでは、削除操作時に行うのはインデックス情報(メタデータ)の削除・無効化と、そのファイルが占有していた領域の解放マーキングのみです。実データの存在するストレージ上のセクタやブロックには、削除直後には何も手を加えません。そのため、実データは物理的にはストレージ上に残存しています(ext4やAPFSでもデータブロック自体は即座には上書きされません。ただしext4はインデックスが消えるため所在が分からなくなり、APFSでは後述のTRIMで内容が消去されます)。

この「実体が残っている」状態を利用するのがデータ復元の原理です。

4-1. 削除後に残るデータと復元の原理

典型的な復元の基本手順は以下の通りです​

  1. 削除ファイルのメタデータ検索:
    • ストレージ上のファイルシステム構造を走査し、削除されたファイルのエントリ(MFTレコードやディレクトリエントリ、inodeなど)を探します。NTFSやFAT32では削除済みの印が付いたエントリが見つかることがあります​。ext4ではこの方法では見つからないためこのステップは飛ばすか、ジャーナル領域を調査します。
  2. データブロックの特定:
    • 見つけたメタデータから、そのファイルが格納されていたデータ領域(クラスタのリストやブロックの場所)を割り出します​。例えばNTFSならMFTレコード内の「データ実体へのポインタ」情報から全クラスタの場所を取得します​。FAT32ならディレクトリエントリから開始クラスタとファイルサイズを取得し、連続クラスタだったと仮定して追います(断片化していれば不完全情報のため推測が必要)。ext4では通常この段階で手がかりがないため、他の手法(カービング)に頼ります。
  3. データの読み取りとコピー:
    • 特定できた元ファイルのデータ領域からバイト列を読み出し、それを新しいファイルとして保存します。こうして論理削除されたファイルを復元(undelete)します。

第5章:ファイルシステム毎の復元メカニズムと難易度の違い

上述の通り、ファイル削除時の挙動はファイルシステムによって似ている部分がありつつも異なる部分もあり、それが復元のしやすさ・しにくさに直結します。

5-1. NTFSにおけるファイル復元のメカニズム

NTFSでは、ファイル削除時に更新されるのはMFT上のフラグと空き領域のビットマップだけで、実データには手を触れません。そのため、削除されたファイルのMFTレコードが他のファイルで上書きされておらず、かつデータ本体が他のデータで上書きされていなければ、MFTレコードからデータの場所(クラスタの連なり)を特定し、元の内容を読み出すことができます。ファイル名やパス、サイズ、クラスタ位置などメタ情報が揃っているため、元通りのファイルが復元できます。

ただし、非常に小さいファイル(1KB未満)でMFT内に「常駐データ」として格納されている場合、削除後に他のメタデータで上書きされやすい点には注意が必要です。また、Windows Vista以降ではトランザクショナルNTFSやMFTの自動圧縮などの機能でごく稀に挙動が異なる場合もありますが、基本的な復元容易性は高いです。

以上のように、NTFSではインデックス情報が比較的完全な形で残るため、削除直後の復元成功率は高い傾向にあります。


5-2. FAT32におけるファイル復元のメカニズム

FATの削除処理では、NTFS同様にデータ本体が書かれているセクタ自体には変化がありません。ディレクトリエントリ上にはファイルサイズなどがそのまま残ります(ファイル長は4バイトで保持され、削除時も維持されます)。

しかし、FAT32の場合はいくつか復元を難しくする特徴があります。削除時、ディレクトリエントリに記録されている先頭クラスタ番号の上位16ビットが0にクリアされるため、大容量ボリューム上では元のデータ開始位置を特定するのが難しくなります。FAT16やFAT12ではクラスタ番号がそれほど大きくないため問題ありませんが、FAT32ではディレクトリエントリだけから完全な開始位置を得られず、ファイルがどこに存在していたか不明になるケースがあります。

さらに、FATファイルシステムではファイルの断片化(非連続なクラスタにまたがる保存)が発生していた場合、削除と同時にFATテーブル上のつながり情報が失われてしまうため、元のクラスタ連鎖を辿ることが困難です。断片化していない(連続したクラスタに格納された)ファイルであれば復元は容易ですが、断片化ファイルでは高度な推測や「カービング」手法が必要になります。

まとめると、FAT32の削除ではディレクトリエントリが削除マーク(0xE5)され、FAT上でクラスタが解放されるだけでデータ本体は残存しますが、メタデータ上の欠落情報(クラスタ番号上位ビットやクラスタ連結順序)のために、大きなファイルや断片化ファイルの完全な復元は難しくなります。ただし、小さなファイルや断片化していないファイルであれば、ディレクトリエントリに残る情報(ファイルサイズや一部のクラスタ番号)を手がかりに比較的容易に復元可能です。


5-3. ext4におけるファイル復元の復元のメカニズム

前述のように、削除時にinodeのポインタが消去されるためメタデータ頼みの復元は基本的にできません。特殊なケース(例えば削除直後でジャーナル領域にまだ古いinode情報が残っている場合など)を除けば、ext4上で削除されたファイルの復元にはファイルカービングと呼ばれる手法(後述)を使ってストレージ全体からデータ断片を探す必要があります。

ただしext4でも、ジャーナルに削除前のメタデータが一時的に残っている短期間であれば、ext4専用の復元ツール(extundeleteやext4magicなど)がジャーナルからinode情報を復元し、元のファイルを取り出せる場合があります。しかし時間が経ってジャーナル領域が上書きされてしまうとこの方法も使えないため、ext4環境での削除ファイル復元は非常に時間との戦いになります。総じて、ext4ではファイル削除時に積極的にメタデータが消去される設計のため、後からの復元は難易度が高いと言えます。実際、商用のデータ復元ツールでもext3/ext4ボリュームに対しては削除ファイルのメタデータ復元ができず、「削除ファイルは全てカービング頼み」となることが知られています。

ext4では削除=データ喪失に近いと認識して、日頃から重要データのバックアップを取っておくことが肝要です。


5-4. APFSにおけるファイル復元が困難な仕組み

APFS単体のファイルシステム挙動としては、ext4と同様にメタデータ上から削除ファイルの痕跡が消えます。さらにAPFSを使う環境はほぼ確実にSSDやフラッシュストレージであり、削除と同時にTRIM処理によって物理的にもデータが急速に消去されます。

APFSは主にSSD上で動作することを念頭に設計されており、削除時にはSSDに対してTRIMコマンド(後述)を発行して、解放されたブロック上のデータはもはや不要であることを通知します。このTRIMにより、SSDは該当ブロックを内部的に即座に消去または将来のガベージコレクションで消去する準備を行います。実際、APFS環境下では削除されたブロックを読み出そうとしても、SSDのファームウェアによってゼロもしくはランダムなデータ(消去済みを示すパターン)が返されるため、元の内容を取得することはできません。これはAPFS固有というより、後述するSSDの特性によるものですが、結果としてAPFS上で一度「完全に削除」したファイルは従来以上に復元が困難になっています。

さらに、APFSはファイルレベルの暗号化と密接に統合されており、特にiOSデバイスでは各ファイルが個別の鍵で暗号化されています。ファイルを削除すると対応する暗号鍵が破棄されるため、仮に物理的にデータ断片が残っていたとしても、鍵の破棄による復元不能が保証されます(この点についてはスマートフォンの節で後述します)。総じて、APFSではコピーオンライトによるメタデータ管理+SSDのTRIM+暗号化という組み合わせにより、ファイル削除後にファイルシステム上の情報からデータを復元することは極めて難しく(=事実上不可能)設計されています。


以上のように、古い設計のFATやNTFSは復元しやすく、ジャーナリングFSのext4やCoW方式のAPFSでは復元が難しいという大まかな傾向があります。この違いは各ファイルシステムの設計思想(データ残留よりも即時の一貫性やセキュリティを優先するかどうか)に起因しています。


第6章:データ復元の次善の方法:ファイルカービング

ファイルカービング(file carving)とは、ファイルシステムのメタデータに頼らず、ストレージ上の生のバイナリデータからファイルの断片を探し出す技術です。具体的には、よく知られたファイル形式(JPEG画像やPDF文書など)なら、そのファイルヘッダやフッタのシグネチャ(マジックナンバー)を手がかりにストレージ全体をバイト単位でスキャンします。例えばJPEGファイルなら0xFFD8FFE0(または0xFFD8FFDB)が先頭に現れ、末尾は0xFFD9です。このパターンをストレージ中から探し出し、その間のデータを切り出して抽出することで、削除された画像ファイル等を復元します。PhotoRecなどのオープンソースツールをはじめ、多くのデータ復旧ソフトでもこのカービング技術を実装しています。

カービングはメタデータが利用できない場合の最終手段ですが、いくつか注意点があります。

第一に、断片化に弱いことです。ファイルが複数の離れた場所に分断されていると、シグネチャだけではひとかたまりのデータとして検出できず、途中で切れてしまったり別のデータが混入したりする恐れがあります。

第二に、ファイル種類に依存することです。シグネチャが明確なフォーマット(画像、動画、Office文書など)は比較的見つけやすいですが、テキストファイルや独自バイナリフォーマットなどはパターン検出が難しい場合があります。また、検出できたとしてもファイル名や元のディレクトリ構造などメタデータ情報は復元できないことがほとんどです(ファイル内容のみ救出)。ext4の削除ファイル復元では主にこのカービングが使われます。

第7章:HDDとSSD・フラッシュメモリにおける復元可能性の違い

ファイルシステムだけでなく、データが記録される物理的なメディアの違いも、削除データの残り方と復元可能性に大きな影響を与えます。伝統的なハードディスクドライブ(HDD)と、SSDに代表されるフラッシュメモリストレージでは、削除後の挙動が大きく異なります。

7-1. HDDの場合

HDDは磁気ディスク上にデータを書き込む仕組みです。セクタにデータを書き換える際、基本的に新しいデータで古いデータを上書きする動作になります。ファイル削除時には前述のようにほとんどの場合データに触れないため、削除後も古いデータの磁気記録はそのまま残ります。HDD上では、削除ファイルのクラスタに別のデータを書き込まない限り、復元ソフトや装置でその磁気パターンを読むことで元の内容を復元できます。一般的な復元ソフトはHDDから削除ファイルを救出することを前提に設計されており、前述のNTFSやFATのメタデータを使った復旧手順が有効に機能します。

HDDの場合、上書きされない限りデータは半永久的に残存します。極端な話、10年前に削除したファイルでも、そのセクタがたまたま他に使われず放置されていれば内容を読み出せます。ただし、一度上書きが行われると原則として古いデータを読み取ることはできません。

※一部では「磁気ディスクは微弱な残留磁気により上書き後も古い情報を復元できる」といった話もありますが、これは特殊な実験レベルの話であり、一般的な観点では上書き=完全消去と見做して問題ありません。


7-2. SSD・フラッシュメモリの場合

SSDやeMMC(スマートフォンの内部ストレージ)などのフラッシュメモリは、HDDとは全く異なる特性を持っています。SSDではデータを書き込む前に必ずフラッシュセルを消去(Erase)する必要があります。また、限られた書き換え寿命を均等化するためにウェアレベリングと呼ばれる技術で、データの物理的な書き込み位置をコントローラが動的に変更します。これらの特性により、SSD上でファイルを削除した場合のデータ残存には以下のような違いが生じます。

  • TRIMコマンドによる即時消去: 現代のOSとSSDは連携して、ファイル削除時にその領域のブロックを事前消去する仕組みを持ちます。OSはファイル削除時または間隔をあけて、該当ストレージに「このブロックはもう使わない」という通知(TRIMコマンド)を送ります。SSDは通知を受け取ったブロックを背景処理で消去済み(電気的に0の状態)にしておきます。その結果、ユーザーがファイルを削除すると、実データが格納されていたフラッシュセルは短時間で消去され、読み出しても何も残っていない状態になります。これは性能向上のための機構ですが、副次的に削除ファイルの復元を著しく困難にする効果があります。実際、「SSDから削除したデータはまず復元不可能」と言われるゆえんは、このTRIMによる即時消去機構があるためです。
  • ウェアレベリングによるデータ散逸: SSDでは論理アドレスと物理メモリのマッピングをフラッシュ変換層(FTL)が管理しています。あるセクタに対して新しくデータを書き込むと、物理的には別のフラッシュページに書かれ、古いページは無効(stale)とマークされ後で消去されます。このため、仮にTRIMが働かない状況でも、削除したファイルのデータが物理的にSSD内に残っていたとしても、それはすでにコントローラによって参照されておらず、特殊な装置で直接フラッシュチップを解析しないと読めない「浮遊データ」となります。またSSDコントローラはガベージコレクションという処理で未使用ブロックを定期的に再利用しますが、その際も古いデータは完全に消去されます。総じて、SSD上では削除データがユーザーからアクセスできる形で残りにくいのです。
  • 暗号化とセキュア消去: SSDやスマートフォンの多くはハードウェアレベルでの暗号化を実装しています。特にスマートフォン(AndroidやiOS)ではデフォルトでストレージ全体が暗号化されている上に、さらにファイルごとに鍵を持つ方式です 。この場合、ファイル削除時に対応する暗号鍵を消去するだけで、そのデータは事実上復元不可能になります 。フラッシュメモリ上には暗号化された断片が残っているかもしれませんが、鍵が無い以上元の内容を知ることはできません。Appleはこの特性を利用して、iPhoneの「消去」操作を即座に完了させつつ実際にはデータは消さず鍵だけ廃棄する、というセキュア消去を実現しています。またSSD自体にも「Secure Erase」と呼ばれるコマンドがあり、これはドライブ内部で全てのセルを一括消去(または内部鍵を破棄)することで完全消去を行う機能です。いずれにせよ、フラッシュメモリ搭載機器ではセキュリティ上、削除データを残さない・復元させない工夫が施されていることが多いと言えます。

第8章:復旧ができない条件

以上をまとめると、NTFSやFAT方式のHDDでは削除後もデータが残りやすく復元も比較的容易ですが、SSDやスマートフォンの内部ストレージでは削除後のデータ復元は原理的に極めて困難(=事実上不可能)です。特に一般ユーザー向けのスマートフォン(Android/iOS)では、プライバシー保護のために削除データの復元を許さない設計になっています。したがって、HDDではうっかり削除に対して復元ソフトという対策が有効でしたが、SSDやモバイル端末では誤って消したデータを後から取り戻すことはまず期待できないのが現状です。運用上も、重要データはクラウドや外部ストレージにバックアップし、SSD搭載PCやスマホでは誤削除に細心の注意を払う必要があります。

  • データの上書き
    一度削除された領域に新しいデータが書き込まれると、元のデータは破壊されます。これが「上書き」と呼ばれるもので、復元が不可能になります。また、セキュリティソフトによって安全に削除される処理(ゼロ書きや乱数書き)をされている場合も復旧は不可能です。
  • フラッシュメモリとTrimコマンド
    フラッシュメモリでは、データを削除するとOSが「Trim」コマンドを発行し、未使用ブロックを制御チップに通知します。これにより、フラッシュメモリ内部でブロックが即座に初期化され、復旧が不可能になります。
  • 暗号化やセキュリティ機能
    BitLocker(Windows)やFileVault(Mac)などで暗号化されている場合、キーが失われると復旧は不可能です。

トップへ戻る