linux系统:rm-rf执行以后,怎么办?我来教你恢复文件。

来源:互联网 发布:软件开发职业教育 编辑:程序博客网 时间:2024/05/16 10:16

大家好我是历史,身为liunx系统管理员,rm命令是不是经常在用呢?有没有做过rm命令以后,瞬间感觉无语的时候!

让大家看看我的血的教训!                  
     


果真感觉蛋疼了,欲哭无泪啊!写了一天的成果,想着把之前备份的文件删除呢,结果把刚写完的删了。

国外著名linx管理员守则中有这么一条:“慎用rm -rf命令,除非你知道此命令将带来什么后果。” 可见这个命令的重要性啊,书中看到的这句话,确实很对。
说了这么多,教教大家执行了rm命令后 该这么办吧,是有办法回复的,我刚经过试验证实了,google有一个开源的包 叫ext3grep工具他可以回复删除的文件,甚至是drop database xcy; 对,就是误删除的数据库都可以回复。


   先说一下他的工作原理吧,然后我在把试验分享给大家, 工作原理其实也不难,这个工具需要在ext3或者ext4 的文件系统上才可以实现,因为ext3文件系统是日志型文件系统,ext3文件系统储存信息的时候是由inode号和block块存储的。
神马? 不知道什么是inode号?和block块? 好吧,在说明白点,比如:一个分区比如一本书,那么block块就是书每页的内容,而inode号 就是书的目录,系统找文件的时候先找inode号 然后根据inode号去找硬盘上的block快信息,明白了吧! 

     
  在说一下删除的原理吧。 当硬盘上的一个文件删除,其实没有真正想象中的那样在硬盘上清除掉的,他是把inode号和block块的那个链子 断开,但是真正的数据还是在硬盘上的,有没有感觉在windos上删除是那么快,没考虑到这吧,当你在删除文件的地方重新复制了新文件,那时候才会把之前的文件覆盖掉,也就是说删除了没有关系,千万不要往那个位置放文件了。

源码包下载位置:http://down.51cto.com/data/709491

原理说完了,开始实战。

环境介绍: 系统版本:CentOS release 5.4 (Final)

1 安装之前先检查有没有这个包: rpm -qa | grep e2fsprogs

2 ext4grep 是个源码包,需要编译安装

检查一下e2fsprogs包是否完整,我的却一个-devel的包,所以要先yum install e2fsprogs* 我偷懒了嘿嘿

解压ext3源码包

进入源码包,然后开始检查包的完整性 执行: ./configure 如果在这个过程中到最后有error那么先检查你的是不是少 e2fsprogs-devel

在进行 make && make install (编译 编译安装) 一般这里不会有问题如果这里报错了 检查你系统是不是缺少 gcc gcc-c++ 这俩包 你可以 yum install gcc* 全部安装 有好处没有坏处哈哈哈

等待完整完,,好了安装完以后。可以先查看一个是否完成成功了,用: ext3grep -v 命令查看ext3的版本信息如下如:

当然如果不知道命令怎么用可以输入:ext3grep --help 查看

然后我需要手动创建一个分区, 创建命令: fdisk /dev/sda 这个因为没有办法保存图像所有我直接显示的创建完成以后的。如果大家不知道怎么创建 可以查看我的 linx基本命令(文件系统章节)。


然后 把这个分区y用ext3分区格式格式化 并且挂载到mnt目录下。



然后 我进入了挂载的目录里, 创建了xcy目录, 把/etc/passwrd 和 /etc/my.cnf 俩个文件复制到了/mnt/xcy目录中,并且 把俩个文件改了下名字 为了我的辨认。 最后我执行了 rm -rf /xcy/* 把xcy文件中的文件都删除了。

咳咳,然后我首先做的是卸载下来 把挂载的分区,因为 怕别人动了我的文件夹 在里面复制了东西我就没有办法恢复了,在下面我执行:ext3grep /dev/sda5 --ls --inode 2 给你们解释一下

ext3grep 删除文件的分区 --ls --innode inode号


为什么最后我们要写2 因为我不知道我的删除的文件的inode号多少, 所有我写的是最大的inode / 的inode号 可以用: ls -id / 查看

执行下去以后就会看到 他在刷帮你找删除的文件们。。


继续走,,扫到最后我们想要知道的文件夹的inode号是2099 然后我们继续执行扫描命令: ext3grep /dev/sda5/ --ls --lnode 2009 这个命令他就会扫 xcy目录下的所有文件(包括删除 还有没有删除文件的inode号了) ,然后我们就可以扫除来了,my.cnf.xcy innode号 是2011 passwd.xcy 文件的inode号 是2010


现在我们的目标马上就要达到了,知道了俩个文件的inode号 就可以进行恢复了.

然后我们执行 ext3grep /dev/sda5 --restore-inode 2011 (恢复my.cnf.xcy文件)

我们在执行 ext3grep /dev/sda5 --restore-inode 2010 (恢复passwrd.xcy文件)

然后我们将卸载的文件系统重现挂载上去。

恢复了,文件不会在原来的位置,他会自动在/ 下创建一个叫RESTORED_FILES 目录 你以后所有恢复的文件都会在这里保存着,还有文件的名字是以inode号命名的 你需要手动修改回来原名字,不要怕不知道那个文件是那个,还记得我们 --ls 扫描的时候他都有对应的文件和inode号



文件恢复了,哈哈 是不是很激动啊,解决了liunx 下不能恢复的问题,这样就可以大大节约成本 不用找硬盘恢复工具 不用花钱了, 对了还有呢, 这个同样可以恢复 mysql 数据库 误操作删除了库或者表 都可以恢复 原理嘛 其实就是恢复相对应的mysql数据库中的文件了,自己尝试一下吧,

对了在说一下,我截图中 圈起来了是正确的命令,别的很多有操作错误的,因为毕竟第一次试验吗。。成功了很高兴,,希望能帮到和我同样遭遇的朋友们。


最后来个总结缺点: 我试验发现这个功能有些缺点:

1 条件必须是ext3 ext4 日志文件系统才可以做到,别的我就不清楚了。

2 我这个是自己创建的分区/dev/sda5 也就是说我知道删除的文件在那个分区上,假如你删除了文件知道在哪里分区中 那么你就需要从sda1 ....sdaN 都试一遍吧,,,,。

有什么问题可以留言 联系我 我看到了可以帮大家解决。。。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 骑手提前点送达怎么办 ubuntu安装报错怎么办 液相色谱两峰分不开怎么办 液相色谱柱老堵怎么办? 没有装usb驱动怎么办 ipad速度越来越慢怎么办 美萍管理软件打不开怎么办 小米4开机黑屏怎么办 小米电脑死机了怎么办 小米8手机死机怎么办 oppa7开不了机怎么办 oppo手机wlan打不开怎么办 三星s6进水黑屏怎么办 银行卡不支持快捷支付怎么办 路由器忘记管理员密码怎么办 云付没有推荐人怎么办 牛呗审核不通过怎么办 华硕笔记本很卡怎么办 淘宝换货没有货怎么办 用手机怎么办网银 手机销号支付宝怎么办 黑狗狗毛发红怎么办 裤子洗掉色了怎么办 没买快递收到怎么办 淘宝介入卖家不举证怎么办 买家拒收快递货怎么办 买家到付拒收怎么办 买家发顺丰到付又拒收怎么办 到付快递骗局怎么办 一年级学生上课走神怎么办 网购出现质量问题怎么办 小米分期没额度怎么办 小米预约错了怎么办 小米商城缺货要怎么办 LG显示器不满屏怎么办 网页页面放大了怎么办 JSP样式失效了怎么办? 客户故意不结账怎么办 面对刁难的顾客怎么办 万家乐燃气灶具不好打火怎么办 垃圾处理器堵了怎么办