关于 rm -rf /有感

2019-12-21 00:50:40 +08:00
 CatCode

刚刚看到了这个帖子 就在刚刚,rm -rf 删软连接的时候后面多加了个 /,现在杯具了 ,又想起了我在 你们平时用 Linux 时喜欢用 root 用户吗 里回复的

我大 root 敢死队什么时候怕过?

结合最近发生的一件事情说一下:
某些发行版的 rm 是默认--preserve-root 的,所以rm -rf /并没有什么卵效果。当然我不确定指定了多个路径的情况。我用过的发行版不多,作死也不多,这一条如果有知道的更多的,欢迎指正。

然后,在讨论rm这个问题的时候,总有人会说alias rm to mv。我想说,其实这样并不能挡住误操作。 这里举一个就前不久在我这里发生的真实例子:
(背景:高校非计算机科学相关专业的科研机群) 在一台节点机上,给新人“练手”:用 root 编译安装一个软件。新人打算备份一下某些数据,但是误操作mv /* bak/(通配符前多打了一个斜杠)新人还真“新”,没搞懂乍回事儿,觉得怎么突然这么慢,也没按 Ctrl +C。等了好久才反应过来,叫来前辈看情况。
此时,各种 bin 已经都被移走了,所有命令都是各种command not found,然后新人居然一个 Ctrl+D 退掉了 SSH——当时那台机器最后一个 SSH 连接。
最后,迫于那台机器上没啥值得抢救的数据,直接重装了,省事儿。

可以看到,rm是有一些重要路径的保护措施的,而mv没有。而总所周知mv是不会丢失数据内容,而rm是可能导致数据丢失的(数据恢复不是 100%保证成功)。

起一个别名并不能解决问题。

然而,删掉了系统,真的有那么可怕吗?我觉得不是,重装系统太简单了。
真正可怕的是删掉、系统上产生的还有价值的数据、删掉部署在系统之上的技术栈、以及机器掉线带来的其他负面影响。
并没有系统命令可以帮你保护这些内容

那我们能做什么呢?老生常谈了:
在敲下回车之前,留个心,多看一眼,仔细一点。
勤备份:不仅仅是备份数据,还有软件架构的冗余、人员的冗余等等。

最后,感谢大家深夜听我逼逼这么多。

9632 次点击
所在节点    Linux
45 条回复
xiaomingVTEX
2019-12-21 16:18:17 +08:00
能力越大, 责任越大
niming007zh
2019-12-21 18:18:40 +08:00
@yuzenan888
为什么不敲 rm -rf *呢
paopjian
2019-12-21 20:45:57 +08:00
请问这种连基本命令都没法用了怎么修复回去呢?
yuzenan888
2019-12-21 21:00:25 +08:00
@niming007zh 习惯问题……经常执行脚本文件都是这样输的。
CatCode
2019-12-21 21:08:43 +08:00
@paopjian 硬盘拆下来,找别的机器挂上,尝试 mv 回来
xuanbg
2019-12-21 21:15:22 +08:00
命令总有输错的时候,这个时候能挽救你的唯有备份。纠结 root 或者 user,rm 还是 mv,其实真的没有意义。

把数据和应用分开存放,多玩 Docker,少玩系统。不要觉得自己能耐,设置了足够多的安全保障,不会错。淹死的都是会水的
xuanbg
2019-12-21 21:17:37 +08:00
真正的安全不是追求不犯错,而是允许犯错,而且不怕你犯错。
KnothHe
2019-12-21 21:28:04 +08:00
我现在是在桌面使用 Linux 的时候尽量不用 rm,改用 trash 了。实在是害怕意外删除有用的文件又没办法恢复了。
SaigyoujiYuyuko
2019-12-21 21:51:56 +08:00
还是仔细看好吧 233
charlie21
2019-12-21 23:35:58 +08:00
倒霉就是倒霉
mokeyjay
2019-12-21 23:45:07 +08:00
我已经非常习惯在录入任何路径前使用 ./ 了,这俩键挨在一起,按着还挺顺手
sola97
2019-12-22 02:18:25 +08:00
习惯性打 tab 二次确认
herexf
2019-12-22 02:28:15 +08:00
所以可以把一次回车改成两次回车吗
mytsing520
2019-12-22 02:40:43 +08:00
所以有上堡垒机的必要性
realpg
2019-12-22 10:39:54 +08:00
真不知道菜鸡运维都哪来的勇气-r 和-f
sxd96
2019-12-22 12:50:38 +08:00
没有用的,习惯问题。
按说 windows 该没问题吧 gui 的,我室友非要 shift del,拦都拦不住,误删过不止一次课件啊报告啊什么的。
还是要好习惯。
b00tyhunt3r
2019-12-22 12:55:22 +08:00
@nvkou 恰恰所有路径使用绝对路径才安全
coolloves
2019-12-22 13:36:51 +08:00
所以我现在基本不用星号,能不用 r 就不用,
CatCode
2019-12-22 16:12:11 +08:00
@realpg 比如你要删一个有.git 目录的目录,就要用到-rf,不然一个一个按 y 会累死的
@sxd96 Windows 下删 U 盘 /储存卡里的东西是不经过回收站的,不要问我是怎么知道的
realpg
2019-12-22 18:47:40 +08:00
@CatCode #39
不用 r 不用 f 当然不行

我的意思是菜鸡运维哪来的勇气看都不看审都不审就回车 很潇洒么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/630972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX