間違えて rm -rf した場合のデータの復元方法について

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

(2019年7月11日 更新)

1.はじめに

間違えて rm -rf を実行してしまった。。
きっと誰もが経験されることだと思います。
バックアップがあればいいのですが、バックアップがなければ
しばらく固まってしまいますね。
本記事では、間違えて rm -rf を実行してファイルを削除してしまった場合の復元方法について書きたいと思います。

2.準備

今回はファイルシステムがext3もしくはext4の場合について考えたいと思います。

また検証したOSはCentOS 6.7です。
使用するツールは「extundelete」です。

では、はじめに、ファイルシステムを確認しましょう。

>df -hT
=>
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    97G  2.5G   89G   3% /
tmpfs          tmpfs  499M     0  499M   0% /dev/shm
/dev/sda1      ext4   239M   58M  168M  26% /boot

確認できたら、読み取り専用にします。

すぐに読み取り専用にしなければならない理由は、rm -rfを実行した後、そのまま放置しているとrmしたデータの場所に新たにデータが次々と書き込まれていきます。
そうなるとファイルの復元が難しくなるので、消えてしまったデータが上書きされないように、とりあえず読み取り専用にします。

mount -o remount,ro /dev/sda3

次に間違えてコマンドを実行した時間をメモしておきましょう

HISTTIMEFORMAT="%F %T " history
=>
  267  2016-03-03 20:31:22 ls
  268  2016-03-03 20:32:59 touch /tmp/hoge/hoge.txt
  269  2016-03-03 20:48:22 rm -rf /tmp/hoge/hoge.txt
  270  2016-03-03 21:02:12 HISTTIMEFORMAT="%F %T " history

上の例だとrm -rfしているのは、「2016-03-03 20:48:22」ということになりますね。

これで準備はOKですね。

3.extundeleteをインストールする

インストールしてみましょう

cd /tmp
mkdir extundelete
curl -L http://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/
download | tar xj
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/a && make && make install

インストールがうまくいかない時は、必要なパッケージがインストールされていないと思うので、
gccとext2fsをインストールしましょう。

sudo yum install -y gcc-c++ e2fsprogs-devel

インストールしたら、とりあえずhelpを確認しましょう。

extundelete --help ← ヘルプを表示

4.使用方法について

基本的には下記のコマンドでファイルを復元させます。

extundelete   --restore-file   (復元対象のファイル)   (復元対象のファイルがあるデバイス)

たとえば、

  • 復元対象のファイルが /tmp/hoge/hoge.txt
  • 復元対象のファイルがあるデバイスが /dev/sda3

であるならコマンドは下記のようになります。

extundelete --restore-file /tmp/hoge/hoge.txt /dev/sda3

時間を指定して復元する場合

/tmp/bin/extundelete --restore-all --after $(date +%s -d '2016-03-03 20:48:22') /dev/sda3

1時間前までに削除してしまったファイルを全て復元する場合

extundelete --restore-all --after $(date +%s -d '1 hour ago') /dev/sda3

extundeleteコマンドを実行すると、コマンドを実行したディレクトリに 「RECOVERED_FILES 」というディレクトリが作成されます。
その中に復元されたファイルが入っているはずです。

参考

Linuxにて削除(rm)してしまったファイルを復元する【CentOS】

Linuxでうっかりrm -rfしちゃったけど復活出来たよー\(^o^)/

extundeleteによる削除済みファイルの復元方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*

CAPTCHA