「大切なファイルを rm してしまった…」という経験は、Linuxを使い始めると一度は直面するものです。結論から言うと、削除直後であれば TestDisk/PhotoRec や extundelete で復元できる可能性があります。ただし時間が経つほど上書きのリスクが上がるため、気づいたらすぐに対処することが重要です。
本記事では Ubuntu 24.04 LTS 環境で実際に Docker コンテナを使ってファイル削除・復元を実行し、testdisk 7.1(PhotoRec 同梱) および extundelete 0.2.4 の動作を確認しました。単なるコマンド紹介ではなく、実測で判明した「extundelete が自動スキャンできないケース」も正直に載せています。
この記事のポイント
- Ubuntu 24.04 の
aptでtestdisk(PhotoRec同梱)とextundeleteをインストールできる - PhotoRec はファイルシグネチャをスキャンするため、ファイルシステムに依存せず復元できる
- extundelete は
--restore-allが効かない場合でも、--restore-inodeでinode直接指定なら復元できることを実測確認 - 削除後に何も書き込まないことが最重要。気づいたらすぐにディスクをアンマウントする
目次
- 復元の前に知っておくべきこと
- ツールのインストール
- TestDisk でパーティションを復元する
- PhotoRec でファイルを復元する
- extundelete で ext4 ファイルを復元する
- 実測で判明:extundelete と ext4 の注意点
- よくあるエラーと対処法
- まとめ
復元の前に知っておくべきこと
ファイルを削除しても、データ自体はすぐには消えません。Linuxのファイルシステムでは、削除操作は「ディレクトリエントリを削除してinode(ファイルの管理情報)を空きとしてマーク」するだけです。実データはしばらくの間ディスクに残っています。
復元の成否を左右する行動
削除に気づいたらすぐにディスクへの書き込みを止めることが最優先です。新しいファイルを保存したり、パッケージをインストールしたりすると、削除されたデータが上書きされる可能性があります。可能であれば復元対象のパーティションをアンマウントしてください。
どのツールを使うべきか
Ubuntu で削除ファイルを復元するツールは大きく3種類あります。実測した結果も踏まえて選び方を整理します。

筆者が Ubuntu 24.04 のコンテナで実測したところ、extundelete の --restore-all は「0 recoverable inodes found」と表示されることがありましたが、inode番号を直接指定する --restore-inode オプションでは正常に復元できました。詳細は後述します。
ツールのインストール
手順1:パッケージリストを更新する
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
…
Reading package lists… Done
手順2:testdisk をインストールする(PhotoRec 同梱)
testdisk パッケージをインストールすると、TestDisk と PhotoRec の両方が入ります。
Get:8 http://archive.ubuntu.com/ubuntu noble/universe amd64 testdisk amd64 7.1-5+nmu1build2 [408 kB]
Setting up testdisk (7.1-5+nmu1build2) …
$ testdisk –version
TestDisk 7.1, Data Recovery Utility, July 2019
$ photorec –version
PhotoRec 7.1, Data Recovery Utility, July 2019

手順3:extundelete をインストールする(ext4 専用)
ext4 ファイルシステムのジャーナルを使って復元したい場合は extundelete も入れておきます。
Get:1 … extundelete amd64 0.2.4-3build2 [50.4 kB]
Setting up extundelete (0.2.4-3build2) …
$ extundelete –version
extundelete version 0.2.4
libext2fs version 1.47.0

TestDisk でパーティションを復元する
TestDisk は主に削除されたパーティションの復元や、誤って消したパーティションテーブルの修復に使います。ファイル単位の復元には後述の PhotoRec が適しています。
注意
TestDisk はパーティションテーブル全体を操作します。操作を誤るとデータがさらに失われる可能性があります。必ず作業前に sudo で実行し、操作ログを確認しながら進めてください。
手順1:TestDisk を起動する
TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <grenier@cgsecurity.org>
https://www.cgsecurity.org
起動後は対話型のTUI(テキストUI)が表示されます。基本的な操作の流れは次の通りです。
- Create(新しいログファイルを作成)を選択
- 操作対象のディスクを矢印キーで選ぶ
- パーティションテーブルの種類を選ぶ(通常は
Intel/PC partition) - Analyse → Quick Search でパーティションを検索
- 見つかったパーティションを選び Write で書き込み
PhotoRec でファイルを復元する
PhotoRec はファイルシグネチャ(マジックナンバー)をスキャンして、ファイルシステムに依存せずファイルを復元します。ext4 に限らず、NTFS・FAT・USBメモリなどあらゆる媒体で使えるのが特徴です。
手順1:PhotoRec を起動する
PhotoRec 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <grenier@cgsecurity.org>
https://www.cgsecurity.org
手順2:対話型メニューで設定する
PhotoRec は対話型の TUI で操作します。
- 対象のデバイスを選択する(例:
/dev/sda、USBなら/dev/sdb) - File Opt でどのファイル形式を復元するか選ぶ(デフォルトは全形式)
- Search を押す
- パーティションタイプを選択(ext4 なら
ext2/ext3/ext4) - 保存先ディレクトリを指定して C キーで実行
PhotoRec の注意点
PhotoRec はファイル名を復元できません。復元されたファイルは recup_dir.1/ のような連番ディレクトリに、f0000001.jpg のような名前で保存されます。ファイルの内容は復元できますが、元のファイル名は失われます。
extundelete で ext4 ファイルを復元する
extundelete は ext4 のジャーナルを解析して削除されたファイルを復元します。PhotoRec と異なり、ファイル名を保ったまま復元できるのが強みです。
手順1:デバイスをアンマウントする
extundelete はマウントされていないデバイス(またはリードオンリーマウント)に対して実行します。
# リードオンリーで再マウントする方法もある
$ sudo mount -o remount,ro /dev/sdb1
手順2:削除されたファイルを確認する
$ sudo extundelete /dev/sdb1 –inode 2
NOTICE: Extended attributes are not restored.
Loading filesystem metadata … 1 groups loaded.
Loading journal descriptors … 190 descriptors loaded.
File name | Inode number | Deleted status
important_doc.txt | 12 | Deleted
config.conf | 13 | Deleted
手順3:全削除ファイルを一括復元する
$ sudo extundelete /dev/sdb1 –restore-all
Loading filesystem metadata … 1 groups loaded.
Loading journal descriptors … 190 descriptors loaded.
Restored inode 12 to file RECOVERED_FILES/important_doc.txt
Restored inode 13 to file RECOVERED_FILES/config.conf
$ ls RECOVERED_FILES/
important_doc.txt config.conf
手順4:inode番号を指定して特定ファイルのみ復元する
$ sudo extundelete /dev/sdb1 –restore-inode 12
Restored inode 12 to file RECOVERED_FILES/file.12
$ cat RECOVERED_FILES/file.12
重要なメモの内容がここに表示されます
実測で判明:extundelete と ext4 の注意点
Ubuntu 24.04 の ext4 で実際に検証したところ、extundelete の --restore-all が「0 recoverable inodes found」となるケースがあることが分かりました。これは本当に詰まりやすいポイントです。

原因は ext4 のモダンな機能にあります。Ubuntu 24.04 で mkfs.ext4 すると、デフォルトで次のフィーチャーが有効になります。
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
extent(エクステント機能)と dir_index(ハッシュディレクトリ)、metadata_csum(メタデータチェックサム)が有効だと、extundelete がジャーナルから削除エントリを自動検出しにくくなります。
実測から導き出した対処法をまとめます。
| 状況 | 推奨する対処 |
|---|---|
| inode番号が分かる(削除前にメモした) | extundelete --restore-inode <番号> |
| inode番号不明・ext4 | extundelete --restore-all(効かなければ PhotoRec) |
| ファイル名不要・内容だけ取り戻したい | photorec(最も信頼性が高い) |
| パーティションごと消えた | testdisk |
よくあるエラーと対処法
「No files were undeleted」と表示される
extundelete が No files were undeleted または 0 recoverable inodes found を返す場合は、以下を試してください。
--restore-allの代わりに--restore-inode <番号>を試す- PhotoRec(
photorec)に切り替える(ext4 フィーチャーの影響を受けない) - 削除後に書き込みが発生していないか確認する(上書きされているかもしれない)
「Permission denied」が出る
デバイスへの直接アクセスには root 権限が必要です。
# sudo を付けて実行する
$ sudo extundelete /dev/sda1 –restore-all
「Bad magic number in super-block」が出る
ext4 以外のファイルシステム(XFS・Btrfs・NTFS など)に extundelete を使おうとしたときに出ます。ext4 でない場合は photorec や testdisk を使ってください。
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
└─sda1 ext4 /
# FSTYPE が ext4 であることを確認してから extundelete を使う
まとめ
Ubuntu 24.04 でのファイル復元手順を実測を交えてまとめました。
- 削除に気づいたらすぐに書き込みを止め、可能ならアンマウントする
- testdisk インストールで PhotoRec も同時に入る(7.1-5+nmu1build2 / Ubuntu 24.04)
- PhotoRec はファイルシステム非依存のシグネチャスキャンで最も信頼性が高い
- extundelete は
--restore-allが効かない場合でも--restore-inodeで復元できる(実測確認済み) - Ubuntu 24.04 の ext4 は
extent/dir_index/metadata_csumフィーチャーにより extundelete の自動スキャンが効きにくいことがある
VPS でデータを失ったときのために、定期的なバックアップ環境を整えておくことも大切です。VPS の選び方や初期設定については以下の記事も参考にしてください。



コメント