📄 00000004.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: wwind (随风), 信区: Linux <BR>标 题: 关于误删除文件的恢复 <BR>发信站: BBS 水木清华站 (Sun Apr 30 13:37:50 2000) <BR> <BR> 前些天被我误删掉的home directory下的几千个文件,经过本人数天的连续奋战, <BR>现绝大部分已恢复,算是奇迹也不是奇迹。 <BR> 删掉文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆 <BR>盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出, <BR>再保存到另外的分区。 <BR> 我先在网上查有关linux <BR>undelete的信息,找到一个ext2fs-undeletion的mini-Howto,后发觉在RH6.2的 <BR>/usr/doc/HOWTO内也有,按它的方法,先将被删掉数据的盘区umount掉(防止写盘覆 <BR>盖被删除的数据,显然这一步在误删数据后做得越快越好,尤其是对多人使用的计算 <BR>机),然后查文件系统中哪些索引点最近被释放: <BR> #debugfs /dev/hda6 (my 'home' partition) <BR> debugfs: lsdel <BR>即给出相应信息,包括索引点,文件属主,大小,删除日期等。也可将结果输出到 <BR>一个文件中 <BR> debugfs: quit <BR> # echo lsdel | debugfs /dev/hda6 > lsdel.out <BR>还可用debugfs中stat查看某一索引点的详细信息: <BR> debugfs: stat <148003> (148003为索引点) <BR>尤其注意其数据块是否连续! <BR>然后将该索引点所指数据块内的数据抓出并存到另一盘区: <BR> debugfs: dump <148003> /dosd/tmp/recovered.001 <BR> 按该mini-Howto的说法,以上方法只使用于大小不超过12个block的文件,对于 <BR>超过12个block的文件,由于unix是将数据分段保存的,需要将各段数据分别取出再 <BR>拼接,所以比较麻烦。但我用stat检查的结果,大文件的数据块也都是紧挨着的, <BR>并没有被分段, 于是我试着用同样的方法将文件dump出来,发觉结果完全正确,对 <BR>六百多兆的大文件也适用!不知道linux就是连续保存文件的,还是因为我的计算机 <BR>只有我一个用户而使然,反正我用上述简单方法将我误删的绝大部分文件都恢复了。 <BR> 需要说明的一点是,恢复的文件是没有保留文件名的,需要你查看文件内容后, <BR>再重新命名。 <BR> 靠人不如靠己,当初没有轻易放弃看来是正确的,尽管我有少量备份。不过经过 <BR>这场"灾难",本人的指法倒是又熟练了不少:几千个文件得一个一个恢复! <BR> <BR> <BR>-- <BR>※ 修改:·wwind 於 Apr 30 13:48:14 修改本文·[FROM: 159.226.88.98] <BR>※ 修改:·wwind 於 May 18 09:29:55 修改本文·[FROM: 159.226.88.98] <BR>※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.88.98] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -