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

        
    大家好我是历史,身为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 都试一遍吧,,,,。

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


作者的话:---&gt这篇文章在51cto中也可以到,没错,对那就是我,也是我原创的,以后转数据库行业了,打算常驻这个论坛,我弘扬原创,这个不算抄袭吧!






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29479238/viewspace-1163084/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29479238/viewspace-1163084/

### 回答1: 如果在Linux执行rm -rf命令误删了文件,可以尝试使用一些工具来找回文件。以下是一些常用的工具: 1. extundelete:这是一个免费的工具,可以用于恢复ext2、ext3和ext4文件系统中的文件。使用该工具需要在文件系统上运行,因此需要使用Live CD或USB。 2. TestDisk:这是一个免费的工具,可以用于恢复各种文件系统中的文件,包括ext2、ext3、ext4、FAT、NTFS等。使用该工具需要在文件系统上运行,因此需要使用Live CD或USB。 3. Photorec:这是TestDisk的一个组件,可以用于恢复各种文件格式的文件,包括照片、视频、文档等。使用该工具需要在文件系统上运行,因此需要使用Live CD或USB。 4. Scalpel:这是一个免费的工具,可以用于恢复各种文件格式的文件,包括照片、视频、文档等。使用该工具需要在文件系统上运行,因此需要使用Live CD或USB。 需要注意的是,如果误删的文件已经被覆盖,那么就无法恢复了。因此,尽可能在误删后立即停止使用该文件系统,并尝试使用上述工具进行恢复。 ### 回答2: 在Linux系统执行rm -rf命令会删除指定目录下所有文件和子目录,这些文件和目录都会被彻底删除,无法恢复。因此,如果执行rm -rf误删了重要文件或目录,需要采取措施进行数据恢复。 以下是一些可用于恢复误删的文件和目录的方法: 1. 使用trash-cli命令。该命令需要提前安装,可以将误删的文件和目录以及它们的元数据存储在垃圾桶中,从而可以通过命令行轻松地恢复它们。 2. 使用extundelete命令。该命令是一个开源工具,可以恢复在ext3、ext4文件系统下误删的文件,也可以恢复已经清空回收站的文件,但是要求在误删后尽快运行。 3. 使用TestDisk命令。该命令是一款数据恢复工具,可以恢复已经被删除、格式化、或分区表出错的分区和文件系统。 4. 使用Photorec命令。该命令也是一款数据恢复工具,与TestDisk命令功能类似,但是更加强大,可以恢复多种文件类型。 需要注意的是,以上方法均不能保证100%地恢复所有的文件和目录,还要依据具体情况进行判断和操作,同时在误删后尽快采取恢复措施,以免被系统重写覆盖,导致无法恢复。因此,在执行rm -rf命令前,应该在确认文件和目录的时候,避免误删,避免造成不必要的后果。 ### 回答3: 误删是指在操作电脑、服务器等过程中,不小心将重要的文件文件夹进行删除操作,而这个删除操作可能会导致数据的丢失,导致后续的工作无法进行。Linux系统执行rm -rf命令时,若不加文件路径,会直接删除整个目录及其子目录内容,如果不小心误删了,我们可以通过以下几种方法进行找回: 1. 使用数据恢复工具 可以使用Linux下的各种恢复工具,比如extundelete、testdisk等恢复工具来查找误删的文件,并尝试将其恢复。 2. 使用备份 在误删之前及时做好数据备份,可以从备份中恢复误删的文件。由于备份的及时性和完整性,能够最大限度保证数据的安全。 3. 使用数据恢复公司的服务 如果数据很重要且不能自己处理,可以考虑寻求数据恢复公司的服务。比如Kroll Ontrack、Stellar数据恢复公司等都可以提供误删数据的恢复服务。 总之,要避免误删,建议在执行删除操作时,尽量确认删除的文件文件夹是正确的,可以在删除前备份数据,以免错删重要数据。同时,平时要多加注意,不要乱删除系统文件,以免造成不必要的麻烦和损失。 以上方法可能并不是100%保证能将误删数据全部恢复,但身为一个合格的程序员,随时备份使用是规范中的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值