可以先看看文件数据状态:
复制代码
debugfs:stat <196829></p>
<p> Inode: 196829 Type: regular Mode: 0644 Flags: 0×0 Version: 1</p>
<p> User: 0 Group: 0 Size: 149500</p>
<p> File ACL: 0 Directory ACL: 0</p>
<p> Links: 0 Blockcount: 38</p>
<p> Fragment: Address: 0 Number: 0 Size: 0</p>
<p> ctime: 0x31a9a574 — Mon May 27 13:52:04 2001</p>
<p> atime: 0x31a21dd1 — Tue May 21 20:47:29 2001</p>
<p> mtime: 0x313bf4d7 — Tue Mar 5 08:01:27 2001</p>
<p> dtime: 0x31a9a574 — Mon May 27 13:52:04 2001</p>
<p> BLOCKS:</p>
<p> 594810 594811 594814 594815 594816 594817 ………………………………….</p>
<p> TOTAL: 38
然后就可以用dump指令恢复文件:
复制代码
debugfs:dump <196829> /mnt/hda/01.sav
这样就把文件恢复出来了。退出debugfs:
复制代码
debugfs:quit
另一种方法是手工编辑inode:
复制代码
debugfs:mi</p>
<p> Mode [0100644]</p>
<p> User ID [0]</p>
<p> Group ID [0]</p>
<p> Size [149500]</p>
<p> Creation time [0x31a9a574]</p>
<p> Modification time [0x31a9a574]</p>
<p> Access time [0x31a21dd1]</p>
<p> Deletion time [0x31a9a574] 0</p>
<p> Link count [0] 1</p>
<p> Block count [38]</p>
<p> File flags [0x0]</p>
<p> Reserved1 [0]</p>
<p> File acl [0]</p>
<p> Directory acl [0]</p>
<p> Fragment address [0]</p>
<p> Fragment number [0]</p>
<p> Fragment size [0]</p>
<p> Direct Block #0 [594810]</p>
<p> …………………………….</p>
<p> Triple Indirect Block [0]
使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。改好后退出debugfs:
复制代码
debugfs:quit
然后用fsck检查/dev/hda5
复制代码
fsck /dev/hda5
程序会说找到丢失的数据块,放在lost+found里面。
另外debugfs不适合恢复大文件。
2、尝试方法二、foremost
foremost是很不错的软件,非常简单,一个命令就恢复了所有图片,但是文件名却丢失了,那么多图片如何恢复名字,没有找到好的办法。同上面debugfs一样,如果是单个文件,或者知道文件名字,这个方法是可以的。但文件量过大,且必须恢复文件名,此方法则不行。










