如何防止根目录被删?

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

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

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

原文发布于微信公众号 - 架构师之路(road5858)

原文发表时间:2016-11-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

高效Java编程工具集锦

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中...

271100
来自专栏EAWorld

微服务模式系列之七:自注册

译者自序: 熟悉我的朋友都知道,我很不喜欢翻译东西,因为在两种语言的思维方式之间做频繁切换对我来说是件很痛苦的事情。但是这次不一样,公司和同事的大力支持降低了我...

34570
来自专栏Python中文社区

Django 博客教程:前言和环境安装(连载一)

專 欄 ❈追梦人物,电子科技大学计算机学院研究生,从事大数据分析研究方向。主要使用 Python 语言进行相关数据的分析,熟练使用 django 开发网站系统。...

24680
来自专栏芋道源码1024

互联网后端基础设施

使用Java后端技术的目的就是构建业务应用,为用户提供在线或者离线服务。因此,一个业务应用需要哪些技术、依赖哪些基础设施就决定了需要掌握的后端技术有哪些。纵观整...

19320
来自专栏程序人生

如何使用一门新的语言

在去年的文章里,我谈了 如何学习一门新的技术。那篇文章通篇形而上,讲大道理,读者颔首称赞,但回过头来在应用层面还是懵懵懂懂,不明就里。今天,我就我过去三周的经验...

29860
来自专栏FreeBuf

全能型反汇编引擎 – Capstone-Engine

Capstone是一个轻量级的多平台多架构支持的反汇编框架。支持包括ARM,ARM64,MIPS和x86/x64平台。今天1.0版本正式向公众开放下载,可以在h...

39550
来自专栏技术专栏

慕课网Flask构建可扩展的RESTful API-2. REST基本特征

我们把服务器提供的服务统一称为资源。 我们可以使用URL来定位资源,如/v1/book/user/1 来定位一个用户 定位到资源以后,可以使用HTPP动词来...

15720
来自专栏ImportSource

微服务与API 网关(上): 为什么需要API网关?

本文是来自于Macro在一次大会上的一个分享。 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把...

86860
来自专栏java闲聊

浅谈架构(单体架构、 SOA架构、微服务架构)

* 一个典型的单体应用就是将所有的业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。

22440
来自专栏Java学习123

WebService到底是什么?

51780

扫码关注云+社区

领取腾讯云代金券