̃Gg[͂ĂȃubN}[Nɒlj

Unix :: コマンド / extundelete



コマンド説明
extundeleteext3 または ext4 パーテーションから削除されたファイルを復元するユーティリティ。パーテーションのジャーナル情報をもとに復元を試みる

extundelete、神のツールです。

大事なファイルを誤って削除してしまった!しかもバックアップを取っていない。
しかし慌てないでください。
削除してしまったファイルをどうしても復元したい場合は extundelete で復元できる可能性があります。

Q : 本当に復元できるの?
A : はい、まだ諦めないでください。
Q : 本当に本当?
A : 本当に復元できます!
特に、現在進行形で有事のあなた、諦めるのはまだ早いです。
私は実際にこのエントリーの方法で有事から脱しました。

本エントリーは、extundelete のインストールとファイルを復元するまでの作業メモになります。

extundelete のインストール

% cd /tmp
% mkdir extundelete
% cd 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
% sudo make install

インストール中のエラー(その1)

Configuring extundelete 0.2.4
configure: error: in `/tmp/extundelete/extundelete-0.2.4':
configure: error: C++ compiler cannot create executables
See `config.log' for more details

gcc-c++ のインストールで回避

% sudo yum install gcc-c++

インストール中のエラー(その2)

Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library

e2fsprogs-devel のインストールで回避

% sudo yum install e2fsprogs-devel

インストールの完了

% sudo make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
Making install in src
  /usr/bin/install -c extundelete '/tmp/extundelete/bin'



ファイルの復元

インストールが完了したら、早速ファイルを復元します。
今回は、下記コマンドにて「1時間以内に削除されたファイルを復元」します。

% cd /tmp/extundelete
% sudo /tmp/extundelete/bin/extundelete --restore-all --after $(date +%s -d '1 hour ago') /dev/xvda3

※ 「1 hour ago」の部分を変更すれば、3時間とか10時間なども指定できます。
ただし、時間の経過とともに、復元できる確率は下がっていきます。


  • パーティーションがアンマウントされていない場合の警告
Only show and process deleted entries if they are deleted on or after 1431325967 and before 9223372036854775807.
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)

復元したいファイルがあったパーティーションがアンマウントされていない場合、上記のような警告が出ます。
※ 今回、対象のパーティーション「/dev/xvda3」はマウントされたままの状態で extundelete を実行しました。

データロスなく復元したい場合は、アンマウントしてから extundelete を実行した方が良いようです。
なお、extundelete を実行した場合、サーバーに想定外の弊害が出るかもしれません。自己責任でお願いします。

今回私はアンマウントせずに extundelete を実行しましたが、目的のファイルを復元できました!
復元したファイルはコマンドを実行した作業ディレクトリと同じ階層に「RECOVERED_FILES」というディレクトリが作られ、この中に入っています。

今回の場合は、以下のパスになります。

/tmp/extundelete/RECOVERED_FILES


おまけ

コマンドのバイナリは以下のパスにあります。(今回の場合)

/tmp/extundelete/bin/extundelete

今後も extundelete を利用したい場合は、/usr/sbin や /usr/bin などにバイナリ自体を移動しておくと良いかもしれません。
あまりお世話になりたくないコマンドではありますが。

  • /usr/sbin に移動
% sudo mv /tmp/extundelete/bin/extundelete /usr/sbin





unix/command/extundelete.txt