暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何防止根目录被删

数据与人 2024-02-28
90
点击上方"数据与人"右上角选择“设为星标”
分享干货,共同成长!


有开发小哥咨询了一个问题,记录一下。
问题如下:
开发环境发生了误删除根目录的情况,执行命令如下:
rm -rf / home/mysql/logs/
我先是表达了同情,然后建议小哥买票跑路(开玩笑哈)。

发现很多朋友都发生过类似的悲剧(例如:多一个空格),这里分享一下避免类似悲剧的经验,希望“误删根目录”的事情永远不再出现。

悲剧回顾

执行了一个清理日志的脚本,脚本大致如下:
...
cd $\{log\_path\}
rm
-rf \*
...

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

如何避免此类事情再次发生?

部分建议

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

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

【三、使用&&】
使用&&将
cd $\{log\_path\}
rm
-rf \*

合并成一个语句
cd $\{log\_path\} && rm -rf \*
当前半句执行失败的时候,后半句不再执行。

【四、判断目录是否存在】
制定编码规范,对目录进行操作之前,要先判断目录是否存在。不过靠人的自觉来保证规范的执行,总感觉有些不太靠谱

其他悲剧

除了上述删除过根目录,还有:
(1)删除过生产数据库
(2)删除过home目录
(3)误格式化过硬盘

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

更多精彩内容,关注我们▼▼


文章转载自数据与人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论