Linux で削除してしまったファイルやディレクトリを復元する

結論

extundelete を用います。2018/10/23 現在では 0.2.4 が最新版です。

インストール方法

コンパイルする

自前でコンパイルする必要があります。ソースをダウンロードしてからコンパイルします。下記では書き出し先に/tmp/extundelete を指定しています。永続的にインストールしたい場合は適宜ファイルを移動して下さい。

$ curl -L http://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/download | tar xj
$ cd extundelete-0.2.4
$ ./configure --prefix=/tmp/extundelete && make && make install

ライブラリが足りない場合は公式サイトの記述を参考にして下さい。CentOS では e2fsprogs-devel、Ubuntu では e2fslibs-dev を入れればいいでしょう。

実行するためのオプション

コンパイルができたら実行します。上記の書き出し先設定の場合はバイナリが /tmp/extundelete/bin/extundelete になります。実行時のオプションはたくさんありますが、ここでは --after--restore-all を指定します。

--after は特定の日時以降に削除されたファイルを復元するために指定するオプションです。UNIXタイムで指定します。

--restore-all は復元するファイルやディレクトリを指定せず、全てのファイルやディレクトリを復元するためのオプションです。

実行する

コマンドを実行します。具体的なコマンド例は以下のようになります。復元されるファイルが置かれる場所はカレントディレクトリ配下です。対象のストレージは /dev/sdb5 です。

$ sudo /tmp/extundelete/bin/extundelete --after 1234567890 --restore-all /dev/sdb5

これでしばらく待つとカレントディレクトリに RECOVERED_FILES というディレクトリが作られ、その配下にファイルやディレクトリが復元されます。

補足

  • 復元できないこともあります
    • やばいと思ったらとにかくすぐリードオンリーにしてアンマウントしましょう
  • ext3 および ext4 が対象です。

参考(大感謝)

Powered by はてなブログ