【Linux】rm -rf 通称バルスの恐怖からファイルを復元
よくあるやつです。 さすがにrm -rf / とかっていう世界が崩壊するような協力魔法を撃ってしまうとなんともなりませんが、ディレクトリとかファイルであれば"ある程度"復元が可能なようです。
とは言え、ドキドキですよね。
ということで、テスト用のファイルを作って実験してみます。
# touch /tmp/test.txt
touchで適当にファイルを作成して消します。
rm -rf /tmp/test.txt
さてWindowsとかMacとかであれば変なことしなければゴミ箱に入っているわけですが。 ゴミ箱ないんですよね。 ってことでこんなものをインストールします。 というかmakeもinstallもさくっとしちゃいましょう!
extundelete
その前にもしext2fsライブラリをインストールしていない場合は makeした時にエラーになる可能性があるので先にインストールしちゃいましょう。
# yum -y install e2fsprogs-devel
# cd /tmp/ # 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 && make && make install
さてこれでextundeleteが使えるようになったんだけど restoreにあたってすべてを指定すると今までのものを。。。となるので 消してしまったファイルの時間を指定し、それ以降のものを復元させる。 そのために、一度消した時間を取得する。
HISTTIMEFORMAT="%F %T " history
例えば自分の場合だと
417 2014-12-01 07:48:39 cd /tmp/ 418 2014-12-01 07:48:39 ls 419 2014-12-01 07:48:40 touch /tmp/test.txt 419 2014-12-01 07:48:41 rm -rf /tmp/test.txt ←ここで消している
なので"2014-12-01 07:48:41"以降のデータ復元となる。 大体やっちまったってなった場合はすぐ調べて対応すると思うからhistoryが埋まるなんてことはすぐにはないと思う。 そう信じたい。
これを復元する。
# /tmp/bin/extundelete --restore-all --after $(date +%s -d '2014-12-01 07:48:41') /dev/root
そうすると
WARNING: 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)
となるので"y"を選択。
復元が開始され、コマンドを実行したディレクトリにRECOVERED_FILESというディレクトリができています。 このディレクトリの中にはfile.xxxxxxというものが入っています。 今回は削除してすぐの状態だったので、1つだけありました。 この中身が削除したファイルになります。 vim等で確認してみるといいかと。
基本はrm -rfとかする時は確認が必要ですね。 実は前に自前のMacBookAirで寝ぼけてrm -rf /とかやっちゃって動かなくなって再インストールしたことがあり その時、もうやるまいとrm.shみたいなものを作って、2度確認するまで消さないみたいなものをalias貼ったのが懐かしいです。
こういうツールは便利ですが、その手前で防げるような何かを考えるべきですね。