如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,debugfs就无能为力了,好在我们有了ext3grep这个开源工具()!
对于ext2
1、在/data(/dev/sdb)上创建并删除测试文件(作测试目的以plantodelete为例)
#vi plantodelete
输入This text is plantodelete! 保存退出
#rm -f plantodelete
2、以只读方式remount /data,防止再次写入文件
#mount -r -n -o remount /data
如果出现busy用
#fuser -k /data
3、恢复误删除的文件
#debugfs /dev/sdb
debugfs 1.35 (28-Feb-2004)
debugfs: lsdel <-- 列出删除的文件
Inode Owner Mode Size Blocks Time deleted
12 0 100600 4096 1/ 1 Sat Dec 19 15:54:04 2009
13 0 100644 14 1/ 1 Sat Dec 19 15:54:08 2009
2 deleted inodes found.
debugfs: stat <13> <-- 察看状态
Inode: 13 Type: regular Mode: 0644 Flags: 0x0 Generation: 2897353947
User: 0 Group: 0 Size: 14
File ACL: 1033 Directory ACL: 0
Links: 0 Blockcount: 16
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4b2c86a0 -- Sat Dec 19 15:54:08 2009
atime: 0x4b2c869c -- Sat Dec 19 15:54:04 2009
mtime: 0x4b2c869c -- Sat Dec 19 15:54:04 2009
dtime: 0x4b2c86a0 -- Sat Dec 19 15:54:08 2009
BLOCKS:
(0):8200
TOTAL: 1
debugfs: dump <13> plantodelete <-- 恢复文件
debugfs: q <-- 退出debugfs
在运行debugfs命令的当前目录下就可以看见恢复的文件了
对于ext3
1、下载并安装ext3grep
#wget -c
#tar zxf ext3grep-0.10.1.tar.gz
#cd ext3grep-0.10.1
#./configure
#make
#make install
2、将要恢复数据的分区umount(以 /dev/sdb /data为例 )
#umount /data
如果因为busy无法正常umount,使用
#fuser -k /data
杀掉进程再umount
3、查找并恢复误删除的文件
#ext3grep /dev/sdb --ls --inode 2
找到想要恢复的文件的inode 如 13
#ext3grep /dev/sdb --restore-file --inode 13
恢复成功后在运行ext3grep的当前目录下就会有RESTORE_FILES目录下就是恢复出来的文件
阅读(5793) | 评论(0) | 转发(0) |