只针对ext2文件系统:
#debugfs /dev/hda1(被删除文件所在的分区)
debugfs:lsdel
就可列出你最近被删除文件的inode表,大致如下:
Inode Owner Mode Size Blocks Time deleted
依此是节点表号,属主,文件属性(即读、写等),大小,block(一般1block=1K),被删除时的时间。有了这些信息,你应该能很快就判断出那个文件是你想恢复的。这时用
debugfs:dump <你想恢复的inode表值> /home/directory(到那个目录)
OK!就这么简单,在/home/directory中可以找到它。
========================================================
参考资料:
http://www.safe5.com/tech/tuwenjiaocheng/20110610/26568.html
对于ext3文件系统:
1.先研究分区,查看是否是ext3:
df -T 能看到各个分区的文件系统类型(比如ext3)
一般的查看磁盘分区的命令:fdisk -l 或者 df -lh
2.尝试增加虚拟机的分区,然后在新增的分区上进行测试
(因为恢复数据的时候需要umount才能进行,如果是主分区的话需要到恢复模式,比较麻烦)
3.虚拟机里增加磁盘空间的方法:
到vmware安装目录,运行:vmware-vdiskmanager -x 10Gb "D:\Virtual\Ubuntu-9.04\Ubuntu-9.04.vmdk"
注意:10Gb是总大小,运行命令前需要将虚拟机的快照都删除
4.分区命令:
fdisk -l 查看目前的分区表
fdisk /dev/sda
command(m for help):
p 列出分区表
m 列出菜单
n 增加分区
w 保存并退出
举例:我的虚拟机里有/dev/sda1 /dev/sda2 /dev/sda5
所以我创建新的磁盘:
command(m for help):n
p 是主分区,e是扩展分区,我用的是p
primary partition(1-4):3
First cylinder (1045-1305, default 1045): 1045
Last cylinder, +cylinders or +size{K,M,G} (1045-1305, default 1305): 1305
然后再列出分区表,用参数p
可以看到/dev/sda3这个新分区
最后w
然后reboot
5.分区后需要格式化新分区
在根目录创建一个文件夹mkdir /testrm
然后再mount:mount /dev/sda3 /testrm
还需要让这个分区开机自动加载:
修改分区表文件:vi /etc/fstab
添加语句:/dev/sda3 /testrm ext3 defaults 0 0
6.需要安装ext3grep 下载后,发现虚拟机要安装好多插件才行,update后再进行处理
在更换源之后,可以apt-get -install文件,安装ext3grep后运行命令
注意:使用恢复工具前,需要将目录umount
cd /
umount /testrm
然后再运行以下命令:
cd /testrm
ext3grep /dev/sda3 --ls --inode 2 (可以查看所有sda3上面删除过的文件)
7.如果恢复?
经过测试发现恢复只能制定文件,不能恢复目录
举例:
ext3grep /dev/sda3 --restore-file test/test1 (这里的文件路径要注意,是testrm后面的目录)
或者还有一个办法,用参数all,将所有删除过的文件都恢复,这样就会产生很多垃圾文件
ext3grep /dev/sda3 --restore-all
8.重要:
这个和windows一样,恢复出来的数据,需要copy到别的目录
cp -rf /testem/* /testrm1
然后再mount /dev/sda3 /testrm
再将testrm1里面的数据回写到testrm。或者直接mount /dev/sda3 /testrm1
===================================================================
后续可能还会研究ext4的数据恢复
转载于:https://blog.51cto.com/peterll/736483