如何防止根目录被删?

开发 开发工具
周末误删根目录《就这样把根目录删了!!!》,引起了广泛的讨论。

[[176987]]

周末误删根目录《就这样把根目录删了!!!》,引起了广泛的讨论:

(1)部分朋友表达了同情

(2)部分朋友建议买机票跑路

(3)部分朋友分享了类似的悲剧(例如:多一个空格)

     rm -rf / home/work/logs/

(4)大部分朋友分享了避免类似悲剧的经验,今天将大伙的经验进行一个汇总,分享给大家,希望“误删根目录”的事情永远不再出现

一、悲剧回顾

执行了一个清理日志的脚本,大致的逻辑是:

...

cd ${log_path}

rm -rf *

...

看上去没有任何问题,进入到日志目录,然后把日志都删除。但是,当目录不存在时,悲剧就发生了。

二、大伙建议

【命令替换】

点赞数最多的朋友“39度的风”建议:

生产环境把rm -rf 命令替换为mv,再写个定时shell定期清理,以模拟“回收站”功能。

【收拢权限】

这个方案建议的人数最多:

帐号权限的分离,线上分配work帐号,只能够删除/home/work/logs/目录,无法删除根目录。

【使用&&】

有部分朋友建议,使用&&将

cd ${log_path}

rm -rf *

合并成一个语句

cd ${log_path} && rm -rf *

当前半句执行失败的时候,后半句不再执行。

【不使用cd】

对于

cd ${log_path}

rm -rf *

直接改为

rm -rf ${log_path}

而不是cd到目录下再执行。

这个方案个人感觉对于这个case可行,但不太通用,总有需要cd的场景吧。

【判断目录是否存在】

制定编码规范,对目录进行操作之前,要先判断目录是否存在。

确实,可是靠人的自觉来保证规范的执行,总感觉有些不太靠谱。

【单元测试】

和制定编码规范类似,自测貌似比较难测出来,根据经验:rd往往以自己编写代码的思路和逻辑编写自测用例,来证明自己代码的正确性。

【使用Python,避免使用shell】

这…

貌似不太通用,技术讨论的***大前提“不要有语言之争”(技术讨论的第二大前提“不要讨论哪个编辑器好用”)。

三、其他悲剧

除了部分朋友反馈也删除过根目录,还有朋友提到:

(1)删除过es数据

(2)删除过生产数据库

(3)删除过home目录

(4)误格式化过硬盘

还有朋友提到了携程之前的线上事故,我们都放下吃瓜看笑话的心态,别人还能够在十几个小时故障恢复,我们问自己一句,“假如我们线上20台服务器全被干掉了”,我们能在十几个小时恢复么?

后续和大家聊聊故障的快速恢复。

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

责任编辑:赵宁宁 来源: 架构师之路
相关推荐

2021-11-01 20:17:07

Go项目目录

2016-11-24 16:50:19

数据库数据库架构1小时延时从

2016-11-21 21:28:51

根目录日志代码

2018-03-26 13:45:27

LinuxWeb服务器文件权限

2010-04-09 10:08:22

Unix操作系统

2024-07-12 08:56:40

2013-08-15 17:10:50

企业文件加密IP-guard溢信科技

2023-05-25 10:07:28

2016-12-19 09:02:05

Linux Shell删除跑路

2022-01-10 09:39:49

Centos根目录权限

2011-03-08 09:41:49

2014-07-09 08:02:52

WiFi

2020-09-28 09:30:13

mybatis

2010-08-24 11:24:35

2014-09-11 15:04:13

2010-09-25 14:34:09

2016-07-05 09:38:08

2018-04-27 10:33:56

Linux命令chattr

2018-03-07 16:55:16

Linux命令删除根目录

2010-10-27 16:29:57

点赞
收藏

51CTO技术栈公众号