extundeleteでファイル復旧にチャレンジ![raspberry Pi]
それほど重要なファイルというわけではないのですが、
はずみでrmして、うっかりファイルを消してしまいました。
たまにやってしまいますね 汗
こういうときのためにrmは使わないで、
要らないファイルはどこかにmvしておく形式にしたほうが良い、とは思っているものの
またやってしまいました。
そこで、試しに復旧方法を調べてみると、なかなか良さそうなものがありました。
extundeleteで簡単復旧?!
extundeleteというので簡単に復旧できるそうです。
てなわけで、実行してみたいわけですが、コンパイルしないといけません。
本当は復旧したいディスクはリードオンリーにして使わないことが鉄則ですが、
起動ドライブであるためそうは行かず、
それでも一応USBメモリをさして、そこでコンパイルすることにしました。
> wget https://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/download > tar -zxvf extundelete-0.2.4.tar.bz2 > cd extundelete-0.2.4 > sudo ./configure Configuring extundelete 0.2.4 configure: error: Can't find ext2fs library
ext2fsがないのでインストールします。
(実際はこういうことを復旧したいドライブでやるのはNGです)
$ sudo apt-get install ext2fs-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 Note, selecting 'e2fslibs-dev' instead of 'ext2fs-dev' 以下のパッケージが自動でインストールされましたが、もう必要とされていません: dc libasn1-8-heimdal libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libkrb5-26-heimdal libroken18-heimdal libwind0-heimdal libxfce4ui-1-0 xfce-keyboard-shortcuts これを削除するには 'apt-get autoremove' を利用してください。 以下の追加パッケージがインストールされます: comerr-dev e2fslibs e2fsprogs libcomerr2 提案パッケージ: doc-base gpart e2fsck-static 以下のパッケージが新たにインストールされます: comerr-dev e2fslibs-dev 以下のパッケージはアップグレードされます: e2fslibs e2fsprogs libcomerr2 アップグレード: 3 個、新規インストール: 2 個、削除: 0 個、保留: 282 個。 1,190 kB のアーカイブを取得する必要があります。 この操作後に追加で 798 kB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main e2fslibs armhf 1.42.12-2 [173 kB] 取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main e2fsprogs armhf 1.42.12-2 [728 kB] 取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main libcomerr2 armhf 1.42.12-2 [59.7 kB] 取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main comerr-dev armhf 2.1-1.42.12-2 [37.6 kB] 取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main e2fslibs-dev armhf 1.42.12-2 [192 kB] 1,190 kB を 2秒 で取得しました (435 kB/s) (データベースを読み込んでいます ... 現在 125349 個のファイルとディレクトリがインストールされています。) .../e2fslibs_1.42.12-2_armhf.deb を展開する準備をしています ... e2fslibs:armhf (1.42.12-2) で (1.42.12-1.1 に) 上書き展開しています ... e2fslibs:armhf (1.42.12-2) を設定しています ... libc-bin (2.19-18+deb8u4) のトリガを処理しています ... (データベースを読み込んでいます ... 現在 125349 個のファイルとディレクトリがインストールされています。) .../e2fsprogs_1.42.12-2_armhf.deb を展開する準備をしています ... e2fsprogs (1.42.12-2) で (1.42.12-1.1 に) 上書き展開しています ... man-db (2.7.0.2-5) のトリガを処理しています ... e2fsprogs (1.42.12-2) を設定しています ... (データベースを読み込んでいます ... 現在 125349 個のファイルとディレクトリがインストールされています。) .../libcomerr2_1.42.12-2_armhf.deb を展開する準備をしています ... libcomerr2:armhf (1.42.12-2) で (1.42.12-1.1 に) 上書き展開しています ... libcomerr2:armhf (1.42.12-2) を設定しています ... libc-bin (2.19-18+deb8u4) のトリガを処理しています ... 以前に未選択のパッケージ comerr-dev を選択しています。 (データベースを読み込んでいます ... 現在 125349 個のファイルとディレクトリがインストールされています。) .../comerr-dev_2.1-1.42.12-2_armhf.deb を展開する準備をしています ... comerr-dev (2.1-1.42.12-2) を展開しています... 以前に未選択のパッケージ e2fslibs-dev を選択しています。 .../e2fslibs-dev_1.42.12-2_armhf.deb を展開する準備をしています ... e2fslibs-dev (1.42.12-2) を展開しています... man-db (2.7.0.2-5) のトリガを処理しています ... install-info (5.2.0.dfsg.1-6) のトリガを処理しています ... comerr-dev (2.1-1.42.12-2) を設定しています ... e2fslibs-dev (1.42.12-2) を設定しています ...
リベンジ!
prefixでUSBドライブの中を指定しています。
$ sudo ./configure -prefix=/media/usb0/src/extundelete-0.2.4/src Configuring extundelete 0.2.4 Writing generated files to disk
成功した・・・?!
$ sudo make make -s all-recursive Making all in src extundelete.cc: In function ‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’: extundelete.cc:1272:29: warning: narrowing conversion of ‘search_flags’ from ‘int’ to ‘ext2_ino_t {aka unsigned int}’ inside { } [-Wnarrowing] buf, match_name2, priv, 0}; ^
成功したのでしょうか・・・?
$ sudo make install Making install in src /usr/bin/install -c extundelete '/media/usb0/src/extundelete-0.2.4/src/bin'
指示の通り /media/usb0/src/extundelete-0.2.4/src/bin にちゃんとバイナリができてました。
なんとか成功したっぽいです。
2:30頃のエポック時間です。
$ date -d "14:30" +%s 1501997400
指定して実行してみました。
$ ./extundelete --after 1501997400 --restore-all /dev/root Only show and process deleted entries if they are deleted on or after 1501997400 and before 2147483647. ./extundelete: No such file or directory /dev/root ./extundelete: No such file or directory when trying to open filesystem /dev/root
ところが「/dev/rootなんかないよ」と言われてしまいます。
どうやら起動しているシステムドライブは対象にできないようです・・・?sudoしてみても同じでした。
試しに接続してるUSBドライブでやってみます。
$ sudo ./extundelete /dev/sda1 --restore-all ./extundelete: Bad magic number in super-block when trying to open filesystem /dev/sda1
FATではだめってことです・・・。
仕方ないので、一度rpi-cloneでクローンドライブを作って、そのドライブに対して実行してみます。
$ sudo ./extundelete --after 1500000400 --restore-all /dev/sdb2 Only show and process deleted entries if they are deleted on or after 1500000400 and before 2147483647. 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) y Loading filesystem metadata ... 476 groups loaded. Loading journal descriptors ... 32574 descriptors loaded. Searching for recoverable inodes in directory / ... 4 recoverable inodes found. Looking through the directory structure for deleted files ... 4 recoverable inodes still lost. Unable to restore inode 3612833 (file.3612833): No undeleted copies found in the journal. Unable to restore inode 3620865 (file.3620865): No undeleted copies found in the journal. Unable to restore inode 3620897 (file.3620897): No undeleted copies found in the journal. Unable to restore inode 3620898 (file.3620898): No undeleted copies found in the journal.
実行したドライブにRECOVERED_FILESというフォルダが作られます。
で、その中にファイルが吐き出されるはずなのですが・・・。
残念なことに、復活ならずででした。フォルダは空っぽ・・・。
extundelete というコマンドの有効性については気になりますので、もう一度検証はしたいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません