如何防止误删根目录

如何防止误删根目录


一、悲剧回顾

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

...

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台服务器全被干掉了,我们能在十几个小时恢复么?

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


转自:架构师之路

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值