恢复ext2文件系统中的被删除文件--debugfs

debugfs是linux系统自带的一个文件恢复工具,它 可以恢复ext2文件系统的文件,但不能恢复ext3文件系统的文件,下面以一个实例来讲解debugfs恢复文件的方法。
首先增加一个虚拟硬盘,分区,格式化(mkfs.ext2),挂载分区。虚拟机环境实现。
实验分区为/dev/sdb2  ,创建分区步骤省略。
[root@oracledb ~]# mkfs.ext2  /dev/sdb2
新建一个目录,挂载上去
[root@oracledb /]# mkdir guazai
[root@oracledb /]# mount  /dev/sdb2  /guazai
新建一个文件,vi file.txt 随便写点内容即可。
[root@oracledb guazai]# ll
total 20
-rw-r--r-- 1 root root    40 Jul 30 15:42 file.txt
drwx------ 2 root root 16384 Jul 30 15:39 lost+found
为了模拟故障,使用rm命令删除file.txt
[root@oracledb guazai]# rm -rf file.txt
[root@oracledb guazai]# ll
total 16
drwx------ 2 root root 16384 Jul 30 15:39 lost+found
该分区上的file.txt被删除了,怎样将其恢复回来呢?下面就是见证奇迹的时刻。
重新挂载分区,以只读方式
[root@oracledb ~]# mount -r -o remount /dev/sdb2
-r表示以只读方式,注意必须设置为只读方式
验证是否设置成功
[root@oracledb ~]# cd /guazai
[root@oracledb guazai]# mkdir aa
mkdir: cannot create directory `aa': Read-only file system
表示设置只读方式成功。
如果不能重新挂载,执行命令查看是谁正在使用该分区的文件
[root@oracledb guazai]# fuser -v -m /dev/sdb2
因为在这里是实验,故没有重要的进程和用户,直接将其杀死
[root@oracledb guazai]# fuser -k -v -m /dev/sdb2
执行命令debugfs
[root@oracledb guazai]# debugfs /dev/sdb2
debugfs 1.39 (29-May-2006)
debugfs:
在debugfs提示符下输入命令:lsdel  可以看到以下信息:
debugfs:  lsdel
 Inode  Owner  Mode    Size    Blocks   Time deleted
    12      0 100600   4096    1/   1 Thu Jul 30 15:42:13 2009
    13      0 100644     40    1/   1 Thu Jul 30 15:43:56 2009
2 deleted inodes found.
如果不知道以前被删除的文件名,可输入命令 ls -d查看
debugfs:  ls -d
 2  (12) .    2  (12) ..    11  (4072) lost+found   <0> (24) .file.txt.swp  
<0> (4028) file.txt  
从时间来看,删除的文件应该是inode为13的文件
使用dump来恢复:
debugfs:dump  <13>  /root/file.txt
其中13为inode,/root/file.txt为要恢复到得路径,路径和文件名可以随便设置
退出查看
debugfs:  quit
[root@oracledb ~]# pwd
/root
[root@oracledb ~]# ll file.txt
-rw-r--r-- 1 root root 40 Jul 30 15:52 file.txt
[root@oracledb ~]# cat file.txt
wo shi file file.txt
filesystem is ext2
恢复的文件就是我之前删除过的file.txt文件。如果不是的话,把13改成12就可以了。
好了ext2文件系统的文件恢复就到这里了,希望对大家有所帮助。

你可能感兴趣的:(职场,休闲,LINUX文件恢复,恢复误删除文件)