暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
EXT文件系统误删除数据恢复指南.pdf
152
8页
0次
2022-03-09
免费下载
温室小花.技术.博客 –纯粹的 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 中被我们“误删除”掉了:
Session 1
Session 2
[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
温室小花.技术.博客 –纯粹的 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
echo_red()
{
# echo a message with red color
echo -e "\e[1;31m$@\e[m"
return 0
}
[root@test1 /home/woqu]
#cat >echo_red.sh
echo_red()
{
# echo a message with red color
echo -e "\e[1;31m$@\e[m"
return 0
}
[root@test1 /home/woqu]
#rm -f echo_red.sh
[root@test1 /home/woqu]
#ll
总用量
0
此时,我们发现文件被“误删除”了,需要恢复数据,那么我们需要怎么做列?
磁盘备份
发现误删除以后,我们需要立刻停止对该分区的写操作。
在恢复之前,如果可能的话,建议通过 dd 令将磁盘整个备份起来,以避免操
作的时候损坏了磁盘上相关数据。
确定进程号和文件句柄号
首先,我们需要确定打开这个文件的进程号,以及进程打开这个文件的文件号。
最直接的办法就是 lsof |grep -i delete
[root@test1 /home/woqu]
#lsof |grep -i delete
cat 11791 root 1w REG 253,0 94 1048589
/home/woqu/echo_red.sh (deleted)
这里一共有 9 列,各列列名如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
也就是说,打开这个文件的进程是 11791,而/home/woqu/echo_red.sh 对应该进
程的文件句柄是 1w。也就是说文件句柄号是 1
of 8
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜