📄 common-undelete.html
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Author" content="Edward Fu">
<meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
<title>Freesoft Linux FAQ -- 关于Linux下的UnDelete</title>
</head>
<body>
发信人: raner (lilo), 信区:
Linux
<br>标 题: 关于Linux下的undelete
<br>发信站: BBS 水木清华站 (Tue Sep 23 18:28:19 1997)
<p> Linux中没有象DOS中undelete这样简单的工具,
它安装好后只是做了个
<br> alias rm='rm -i'的alias, 先confirm一下才删. 但假如真错删了重要
<br> 文件怎么办? 一个解决办法是用mc(midnight commander), 它有个undelete
<br> 功能,可以找到ext2 fs上被删掉的i-node, 文件名是无法恢复了(因为ext2
<br> 也用Unix的传统,目录文件中保存文件名和i-node index, 删除时将i-node
<br> 清为0, 因此从i-node table是无法反查到目录文件的), 但文件的其余信息
<br> 都还在.
<p> 我在恢复一个重要文件时发现mc只能恢复前12K内容,觉得很奇怪,
用
<br> lde(Linux Disk Editor, 仿Norton做的, 编辑硬盘block很好用)学了一下
<br> ext2 fs, 结构很简单, 每个i-node中12个direct block, 3个1/2/3次indirect
<br> block. 而Linux Kernel在删文件时做了一件令我费解的事: 它把所有的
<br> indirect block全清0! 按道理在block bitmap中标为free就得了,将其
<br> zero简直是吃力不讨好. 这也就是为什么mc只能恢复12K(direct block)的原因
<br> 而且若文件的block不是连续存放的,那将导致后面的block根本无法恢复!
<p> 不过幸好,我那个文件只几十K(源程序), 而且是unfragmented的,即
<br> block连续,用lde手工恢复了个indirect block就OK了. 据说在2.1.x板的
<br> kernel中已将zero indirect block的举动去掉了, 那样恢复起来就好办多了.
<br> (干完后才发现有篇mini-HOWTO是讲undelete的 :-( )
<p> 吸取这次教训,我装了个safedelete, alias rm=safedelete,
alias purge=rm
<br> 它起Win95中RecycleBin的作用,删掉的文件存于一个地方,过指定时间自动
<br> purge, 还廷好用。
<p>注:参考: <a href="http://pobox.com/~aaronc/tech/e2-undel/">http://pobox.com/~aaronc/tech/e2-undel/</a>
<br> 还看到另外一个<a href="http://amadeus.upr.clu.edu/~undelete/">UnDelete</a>工具。
<br>--
<br>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.5.84]
<br>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -