如何恢复 Linux 上删除的文件 (3)

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:恢复系统中删除的文件是一个非常繁琐的过程,而 e2undel 这个工具可以用来方便地恢复文件系统中已删除的文件。本文将首先讨论 e2undel 的工作原理和用法,并对之进行一些改进。然后讨论了文件系统故障、文件系统重建、磁盘物理损坏等情况下应该如何恢复数据。

  重建文件系统的解决办法

  在日常使用过程中,可能碰到的另外一个问题是管理员可能错误地执行了某些命令,例如使用mke2fs 重建了文件系统,从而造成数据的丢失。实际上,在 mke2fs 创建文件系统的过程中,并不会真正去清空原有文件系统中存储的文件的数据,但却会重新生成超级块、块组描述符之类的信息,并清空索引节点位图和块位图中的数据,最为关键的是,它还会清空索引节点表中的数据。因此尽管文件数据依然存储在磁盘上,但是由于索引节点中存储的文件元数据已经丢失了,要想完整地恢复原有文件,已经变得非常困难了。

  然而,这个问题也并非完全无法解决。在 e2fsprogs 包中还提供了一个名为 e2image 的工具,可以用来将 ext2 文件系统中的元数据保存到一个文件中,下面是一个例子:

  清单13. 使用超级块拷贝挂载文件系统

# e2image -r /dev/sda2 sda2.e2image

  这会生成一个与文件系统大小相同的文件,其中包含了文件系统的元数据,包括索引节点中的间接块数据以及目录数据。另外,其中所有数据的位置均与磁盘上存储的位置完全相同,因此可以使用 debugfs、dumpe2fs 之类的工具直接查看:

  清单14. 使用 debugfs 查看 e2image 映像文件的信息

# debugfs sda2.e2image.raw
debugfs 1.40.2 (12-Jul-2007)
debugfs: ls -l
   2  40755 (2)   0   0  4096 31-Dec-2007 15:56 .
   2  40755 (2)   0   0  4096 31-Dec-2007 15:56 ..
   11  40700 (2)   0   0  16384 31-Dec-2007 15:54 lost+found
   12 100644 (1)   0   0  10485760 31-Dec-2007 15:56 testfile.10M
   13 100644 (1)   0   0  35840 31-Dec-2007 15:56 testfile.35K

来源:ibm    作者:冯锐 王磊    责编:豆豆技术应用

正在加载评论...