
温室小花.技术.博客 –纯粹的 unix 技术博客 http://www.evanjiang.net QQ:3819468
红颜弹指老,刹那芳华,与其天涯思君,恋恋不舍,心绕不断,莫若相忘于江湖!
多年 Unix/Linux 经验,丰富 MiddleWare /DataBase 经验,现居广州.
技术博客: http://www.evanjiang.net QQ: 438549233
Skype/MSN:zymh_zy@hotmail.com Mail: zymh_zy@163.com
Linux EXT 文件系统误删除数据恢复指南
在管理数据库和系统的时候,经常需要做 rm 删除文件的操作。由于 Linux 是没
有回收站的,rm 删除了文件或者目录以后,数据是无法从 Windows 所谓的回收
站中找到并恢复的。这样的话,数据被误删除了以后,想要恢复我们一般需要从
备份中,或者找数据恢复公司来恢复数据。但是,在某些比较特殊的情况下,使
用了以下方法,我们还是可以找回部分数据的。
这里我们主要介绍两种数据恢复的方法。第一种是针对文件在文件系统中已经被
删除了,但是,打开这个文件的进程还存在。第二种针对文件在文件系统中已经
被删除了,目前也没有任何进程打开着这个文件,但是文件在删除以后没有其他
对文件系统的变更操作。
1. 从/proc 文件系统恢复数据
在 Linux 系统中,文件被删除了,只要打开文件的进程没有被关闭,那么恭喜你,
这个文件重新恢复出来的可能性非常大。因为 Linux 操作系统在删除文件时,会
判断打开这个文件的所有进程是否都已经关闭,如果还有一个进程没有关闭,那
么这个文件的空间将不会释放。只有所有打开这个文件的进程都关闭以后,这个
文件的空间才会释放。这也是为什么在 Linux 下有时候我们删除文件,文件的空
间无法释放掉的原因。
这种情况下,我们可以尝试从/proc 文件系统中将文件恢复出来。
/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机
制 (所以叫做 /proc)。通过这个伪文件系统让你可以和内核内部数据结构进行
交互。你可以获取对应进程的有用信息,在运行中 (on the fly)通过改变内核参
数修改部分设置。它与其他文件系统不同,/proc 是存在于内存之中而不是硬盘
上。
接下来我们模拟一下数据误删除的过程,来看看在进程没有关闭的情况下,怎么
从/proc 中恢复数据。
首先,我们有一个 echo_red.sh 的文件,我们在会话 session 1 查看一下这个文件
的内容。
此时,在另外一个会话 session 2 中有一个进程在修改这个文件:
然后这个文件在会话 session 1 中被我们“误删除”掉了:
[root@test1 /home/woqu]
#ll
总用量
4
-rw-r--r-- 1 root 93 10
月
16 17:49
echo_red.sh
[root@test1 /home/woqu]
#cat echo_red.sh
评论