Linux 危险命令之 rm -rf
linux玩家一定知道 rm -rf 命令,网络上流传着很多关于rm -rf 命令的故事,我相信你一定听说删库跑路吧,删库跑路很可能跟rm -rf 有关。今天我们就来领略下这个命令,顺便看看错误执行这个命令有多可怕,下面我会在测试用的虚拟机里面执行这个删库跑路 命令 rm -rf /* ,让我们来看看这个令人闻风丧胆的 rm -rf /* 到底有多可怕。
图片来源于网络如有侵权立即删除
准备下我们的环境,centos7 虚拟机一台,嘿嘿特意新装一个虚拟机用于我们删库跑路的,这个虚拟机是没有任何有用数据的,它的使命是给我们删库跑路的。
下面我们开始执行 rm -rf /* ,看看有啥效果。
视频加载中...
经过一段时间的执行后,我们来看一下效果。发现我们的文件全没了,甚至一些基础命令都不能用了,到此我们就完成了删库。
执行rm -rf /*后效果
有的朋友说,那我们去回收站找回来啊,回收站?咱们这centos 7 根本就没有那个东西。大神或者专业的数据恢复公司还有点可能恢复数据,普通人只能重装系统了。
这里只演示了rm -rf /* 的危险性,在写shell脚本时有的时候某些变量的原因也会造成误删,或者是写命令时一个手滑多一个空格都会造成非常严重的损失,我们要少用rm -rf 命令甚至不用,不管是老司机还是新手都要注意。
让高级程序员都崩溃的rm-rf命令终于找到补救方法了
据说曾经有一个哥们,运维部刚刚整好一台机器交给他部署,然后他听说rm-rf/很好玩,就输了一个rm-rf/然后,然后就没有然后了......
那么问题来了,这个可以让你的世界都安静的rm-rf/命令,到底是个“何方神圣”呢
rm命令用来删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
rm命令的一般形式为:
rm [选项] 文件名…
如果没有使用- r选项,则rm不会删除目录。
该命令的各选项含义如下:
- f 忽略不存在的文件,强制删除,不给出提示。
- r 指示rm将参数中列出的全部目录和子目录均递归地删除。
- i 进行交互式删除。
使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。为了防止这种情况的发生,可以使用i选项来逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。
在国外著名linx管理员守则中有这么一条:“慎用rm -rf命令,除非你知道此命令将带来什么后果。”
但是我们都知道,如果如果所有事情都按我们希望的那样发展,我们程序猿早就飞黄腾达了,哈哈,开个玩笑,有时候我们或许会一不注意,一个rm命令就出来了,然后地球开始旋转,世界开始寂静,大脑开始空白了。。。但不要太过于紧张吧,或许这个方法可以帮你补救下(只是或许哦)
(该方法来源于网络用户名history_xcy的作者,原文地址http://blog.itpub.net/29479238/viewspace-1163084/)
先说一下他的工作原理吧,然后把试验分享给大家, 工作原理其实也不难,这个工具需要在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数据库中的文件了,自己尝试一下吧,
对了在说一下,我截图中 圈起来了是正确的命令,别的很多有操作错误的,因为毕竟第一次试验吗。。成功了很高兴,,希望能帮到和我同样遭遇的朋友们。
当然还有些正常的补救操作:
对于linux 很多人都认为将用root权限将系统rm -Rf /* 整个盘的数据将会丢失,首先请不要紧张不要对数据盘执行任何操作。如果命令正在执行请立即停止 Ctrl+c
执行rm -Rf /* 后整个系统将会逐步从根目录按照字母表表的先后顺序删除。
立即停机,不要指望能够进入以前的系统。千万千万不要重新安装系统后再试图用软件恢复,那个时候不管用任何方式都是徒劳,切记切记!!
下面是方法,如果系统在本地,立即将磁盘取出,挂载到新服务器。如果在云盘,联系服务商将将系统(损坏了的系统)镜像(等同于拆下了硬盘), 然后通常云服务器都可以再将损坏了的系统进行挂载。
利用网络上面介绍到方法将系统修复,这里面就不再详细介绍。 总之记住一点问题没有想象中的眼中,也没有论坛里面说的那么严重。 不过对于系统级别的数据可能会造成影响,但是对于存储在硬盘里面的数据一般不会有太多的丢失
最后,只能说到这里了,千万不要紧张。记得以后将重要数据及时备份。祝你好运
相关问答
linux中rm-rf是什么命令?
在Linux中,`rm-rf`是一个用于删除文件和目录的命令。`rm`是remove(删除)的缩写,`-r`或`-R`参数用于递归地处理目录,而`-f`参数用于强制删除文件或...
rm-rf命令完全执行后会怎么样?
rm是删除命令-rf是循环删除,执行完了基本上也找不到了rm是删除命令-rf是循环删除,执行完了基本上也找不到了
在Linux上执行rm-rf操作,会导致设备永久变砖吗?
感谢不请自来!执行rm-rf/会让操作系统包括所有数据报废,以下是本人的演示视频演示Linux的root自杀,rm-rf/*的血泪,此操作将删除系统所有数据,包括操作...
在Linux系统上误操作rm-rf/命令是一种怎样的经历?
那我就帮题主试一下吧archLinux执行完成后启不起来了DeepinLinux执行完成后无法启动,进入grub引导救援模式rm-rf/命令不会被立即执行,系统会判断出...
服务器怎么防范“rm-rf”这类型的误操作呢?-红网问答
最基本的,用户账号权限分级,日常登陆用的账号给一个较低的权限,敏感的文件夹、命令只有高权限账户才能执行,需要操作时候低权限用户需要sudo,这样可...
linuxrmrf什么命令都没法使用-ZOL问答
rm-rf*删除当前目录下的所有文件这个命令很危险,应避免使用。所删除的文件,一般都不能恢复!所以文件的都没有了,命令也就都没有了其实我看不出有什么问题...
Rm-Rf和Rm还有β(Rm-Rf)分别是什么意思_会计学堂
[回答]Rm-Rf是市场组合的风险补偿率,风险溢价率Rm是市场组合的平均报酬率β(Rm-Rf)是风险附加率
Linux删除文件夹命令?
1、删除文件命令rm-f文件名将会强行删除文件,且无提示需要注意:使用rm-rf要格外注意,linux中没有回收站,慎重删除2、删除文件夹以及文件夹中的所有文...
linux如何使用rm命令快速删除文件-178****5919的回答-懂得
加个参数rm-f或者rm-rf递归删除不询问是否里面是否有其他文件。rm命令用于删除文件。命令格式:rm[选项]文件名常用选项:-f,--force强制删除。...
老师请问一下在资本定价模式中Rm代表什么。Rm-Rf代表什么老...
[回答]判断是Rm,还是Rm-Rf就看收益率/报酬率前面是不是紧跟着“风险”二字如果是紧跟着风险,如风险收益率、风险报酬率,就不用管前面的定语是所有股票的...