消したファイルをリカバリする方法(PhotoRec)


Photorecというオープンソースのツールを使えば、間違えて消してしまったファイルを元に戻せる可能性がある。


参考リンク

Digital Picture and File Recovery(公式wiki
testdisk — testdisk 7.1 documentation(公式ドキュメント)
PhotoRec Step By Step - CGSecurity(公式wikiのPhotoRec使用手順)

手順

Linuxでの手順を書きますが、PhotoRecはWindowsでも使えるツールみたいです。

1.対象ディスクのコピー

対象ディスクが外部デバイスではない場合、まずPCの電源を消して、LiveOSでUSBブートします。
ddコマンドなどで、対象ディスク全体をコピーする(デバイスファイルから直接リカバリすることもできるが、こちらのほうがたぶん安全)。壊れたHDDからファイルを回復したい場合などは、ddrescueコマンドを使えばうまく行く可能性あり。

dd if=/dev/sda of=backup.img bs=1M status=progress

ddコマンドの使い方については詳しくは書きませんが、lsblkなどでディスク名を確認してコピーしましょう。

2.TestDiskをインストール

PhotoRecは、TestDiskというツールの一部なので、TestDiskをインストールします。
UbuntuDebianなら以下コマンドでインストールできるはず。

sudo apt install testdisk

公式サイトはここ(https://www.cgsecurity.org/wiki/TestDisk_Download)にあるので、ここからダウンロードもできる。

3.PhotoRecを起動

sudo photorec backup.img

1でディスクをコピーしたファイルを指定して起動。
これ以降は対話式で実行するので説明は要らない…はずなのですが、やや分かりにくいので書いておきます。

4.対象ディスクを選択


バックアップイメージを対象にする場合、これは一つしか表示されないはず。エンター押せばOK。

5.ファイルの種類の選択


パーティション選択の画面に移りますが、すぐにパーティションを選択せずに、右に行って[ File Opt ]を選択するのがオススメ(下部のメニューは左右ボタンで動かせる)。

リカバリしたいファイルの種類を選択できます。sで全消去して、xで目的のファイルの種類を有効化し、エンターを押して元に戻る。

6.パーティションの選択

さっきの画面に戻ります。対象のパーティションを選択し、下メニューを[ Search ]に戻してエンター。

7.ファイルシステムの種類の選択


対象パーティションファイルシステムext2ext3ext4の場合は[ ext2/ext3 ]を、それ以外の場合は[ Other ]を選択。(ext4も[ ext2/ext3 ]を選ぶのに注意)

8.未割り当ての領域だけをスキャンするか、全体をスキャンするかを選ぶ

https://www.cgsecurity.org/mw/images/PhotoRec_free.png
[ Free ]を選択した場合、現在使われていない領域だけからスキャンするようです。この場合、削除済みのファイルだけをリカバリし、未削除のファイルは無視されます。

9.出力先ディレクトリを選択


出力先を選択し、cを入力すればスタート。

10.PhotoRecを終了


終わったら[ Quit ]を選択していって終了。

11.その後

PhotoRecによってリカバリされるファイルは、ランダムなファイル名で大量に出力されます。ここから目的のファイルを見つけ出す必要がある訳です。
重複した中身のファイルがリカバリされる可能性があるので、まずはそれを消しておきましょう。
fdupesコマンドを使うと、

sudo fdupes -rfdN (出力したディレクトリ)

で重複消去できる。
そのあとはfindコマンドとか使って頑張ってください…。