VineSeed ML アーカイブ



[VineSeed:23271] new: extundelete <plus>

  • From: NAKAMURA Kenta <kenta@xxxxxxxxxxxxx>
  • Subject: [VineSeed:23271] new: extundelete <plus>
  • Date: Sat, 30 Apr 2011 20:48:21 +0900
中村です。

ext3, ext4 ファイルシステムで誤って削除したファイルを
復旧させるユーティリティ extundelete をVineSeed に put しました。

   extundelete-0.2.0-3vl6.src.rpm
   extundelete-0.2.0-3vl6.i686.rpm
   extundelete-0.2.0-3vl6.x86_64.rpm

新規のパッケージで、カテゴリは Plus でお願いします。


使い方としては、

# extundelete --restore-all /dev/sdb4

とファイル削除したパーティションを指定すると、カレントディレク
トリ以下の RECOVERED_FILES ディレクトリに復旧できたファイルが
作られます。
このままだと、直近で消したファイル以外にも大量のファイルが復旧
対象となるので、--before date オプションで対象となるファイルの削除
日時を指定することも可能です。


新しい ext4 パーティションに kernelソースを展開した後、削除して
復旧できるか試してみました。


パーティションを作成して、kernelソースを展開

# /sbin/mkfs.ext4 /dev/sdb4
# mount /dev/sdb4 /mnt/sdb4
# cd /mnt/sdb4
# wget -O - http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.4.tar.bz2 | bunzip2 -c | tar xfv -
# find linux-2.6.38.4/ -type d | wc -l
   2223
# find linux-2.6.38.4/ -type f | wc -l
  35867

削除します。
# rm -rf linux-2.6.38.4/

復旧対象のパーティションを unmount して、extundelete を実行すると、
カレントディレクトリに RECOVERED_FILES ができます。

# cd /tmp
# umount /mnt/sdb4
# extundelete --restore-all /dev/sdb4
# mount /dev/sdb4 /mnt/sdb4


復旧できたファイル数をみると、35867個中 35821個 (99.9%) がファイルの中身
も含めて復旧できました。

# find RECOVERED_FILES/linux-2.6.38.4 -type d | wc -l
   2222
# find RECOVERED_FILES/linux-2.6.38.4 -type f | wc -l
  35821
# diff -rs orig/linux-2.6.38.4 RECOVERED_FILES/linux-2.6.38.4  | grep "are identical" | wc -l
  35821
# LANG=C diff -r orig/linux-2.6.38.4 RECOVERED_FILES/linux-2.6.38.4 | egrep "^Only in orig" | wc -l
     47


ただし、これは削除した直後に extundelete を実行した、理想的な
条件です。常にこのように高確率で復旧できる保証はありません。

大切なファイルはバックアップを欠かさないようにしましょう。


==================================================
  NAKAMURA Kenta / 中村健太
  Mail: kenta@xxxxxxxxxxxxx
==================================================