欢迎您的访问
专注于分享最有价值的互联网技术干货

如何防止根目录被删

几个T的资料等你来白嫖
双倍快乐
一定要收藏这个宝藏网站防止丢失,求助资源~!!!

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

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

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

赞(0) 打赏
版权归原创作者所有,任何形式转载请联系我们:大白菜博客 » 如何防止根目录被删

评论 抢沙发

7 + 7 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏