网站大量收购闲置独家精品文档,联系QQ:2885784924

linux文件系统误删除数据恢复.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
我们在管理数据库和系统的时候,经常需要做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 1Session 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.shecho_red(){????# echo a message with red color????echo -e \e[1;31m$@\e[m????return 0}???[root@test1 /home/woqu]#cat echo_red.shecho_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 deletecat???????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。???恢复误删除文件然后,我们就可以直接将这个文件的内容拷贝出来:?[root@test1 /root]#cp /proc/11791/fd/1?echo_red.sh?[root@test1 /root]#cat echo_red.shecho_red(){????# echo a message with red color????echo -e \e[1;31m$@\e[m????return 0}如

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档