Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何防止根目录被删?

如何防止根目录被删?

作者头像
架构师之路
发布于 2018-03-01 10:35:03
发布于 2018-03-01 10:35:03
1.9K0
举报
文章被收录于专栏:架构师之路架构师之路

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
就这样把根目录删了!!!
可能每个人都无意删除过根目录,我的case是这样的,执行了一个清理日志的脚本,大致的逻辑是: ... cd ${log_path} rm -rf * ... 看上去没有任何问题,进入到日志目录,然后把日志都删除。 但是,当目录不存在时,悲剧就发生了。 程序员总是会这么自信,认为自己写的代码是完美的,别人的代码看着就有想改的冲动。 有多少次:“只改了一行代码,保证没问题”。 有多少次:“上线吧,不可能有问题” 正常流程所有人都能写的出来,优秀的程序员与普通程序员的差异,在于异常分支的处理。 本case的启示:
架构师之路
2018/03/01
8610
Linux Shell 从入门到删除根目录跑路指南
shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~ 今天就来聊聊 linux 下一个常见的问题:如何避免误删目录。下文会详细的讲述不同的场景下误删目录,以及相应的解决方案。 1、变量为空导致误删文件 base_path=/usr/sbin tmp_file=`cmd_invalid` # rm -rf $base_path/$tmp_file 这种情况下如果 cmd 执行出错或者返回为空,
用户1177713
2018/02/24
2.2K0
Linux Shell 从入门到删除根目录跑路指南
Linux Shell从入门到删除根目录跑路指南
shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~ 今天就来聊聊 linux 下一个常见的问题:如何避免误删目录。下文会详细的讲述不同的场景下误删目录,以及相应的解决方案。 1、变量为空导致误删文件 base_path=/usr/sbin tmp_file=`cmd_invalid` # rm -rf $base_path/$tmp_file 这种情况下如果 cmd 执行出错或
小小科
2018/05/03
2.8K0
Linux Shell从入门到删除根目录跑路指南
临近五一,小林我删删删删库了,要跑路吗?
写个简单的 Bash 脚本都不上心了,写完连检查都不检查,直接拖到到实体服务器跑。
小林coding
2020/05/18
2.7K0
临近五一,小林我删删删删库了,要跑路吗?
运维管理之防止"rm -rf /" 误删除
大概懂点linux的程序员都知道“rm -rf /”意味着擦除根路径“/”下挂载的所有内容而无需询问。以前一个主管说过,在你不充分了解某个工具的原理的时候,不要太过相信依赖他。哪怕自己去写个简陋的,可以看到源码,也是比较靠谱的。深信不疑!
lyb-geek
2018/07/26
3.3K0
Linux之文档与目录结构
Linux目录结构的组织形式和Windows有很大的不同。首先Linux没有“盘(C盘、D盘、E盘)”的概念。已经建立文件系统的硬盘分区被挂载到某一个目录下,用户通过操作目录来实现磁盘读写。
超蛋lhy
2018/08/31
1.3K0
Linux之文档与目录结构
Linux 常用目录管理命令(cd pwd mkdir rmdir)
      Linux 的命令非常之多,而使用的最多最广最基本的莫过于一些常用的命令,如目录命令即是如此。Linux的常用目录命令与DOS中的目录命 令非常相似,只不过使用了不同单词的缩写而已。如cd(change directory)等同于Windows中的cd,ls命令等同于Windows中的dir。尤其对早期 使用过DOS的人而言,这些并不陌生。同样在Linux中的绝对路径、相对路径的概念与Windows中的路径表述其实质是一样的。本文仅仅列出几个 常用的目录命令以及各个命令的常用参数。
Leshami
2018/08/14
3.2K0
linux服务器安装svn超详细介绍
  本人选择在/usr/share/nginx/html/svn路径下创建版本库,当前处于根目录下,一次性创建如下:
全栈程序员站长
2022/09/06
4.5K0
linux服务器安装svn超详细介绍
Linux文件与目录的日常操作:轻松上手指南
在Linux系统中,文件和目录的管理是日常操作中最基础也是最频繁的任务之一。无论你是系统管理员、开发人员还是普通用户,掌握这些基本操作都将极大地提升你的工作效率。本文将用通俗易懂的语言,带你深入了解Linux中查看目录及文件、切换目录路径、以及文件与目录的创建、删除、移动与复制等日常操作。
久绊A
2024/08/22
3680
Linux常用命令及Linux系统根目录下各个目录的作用
其中cd、ls、touch、mkdir、rm、rmdir、mv命令最为常用,必须牢记。 1.cd命令: 格式:cd [目录名称] 功能:进入文件夹 常用选项: cd … 返回上一级目录; cd …/… 将当前目录向上移动两级; cd - 返回最近访问目录; cd / 返回根目录;
鲲志说
2025/04/07
1520
Linux常用命令及Linux系统根目录下各个目录的作用
都别拦着我,我要删库了
一个流传甚广的命令,删库命令,自毁命令说的都是他,常年霸占Linux最危险命令排行榜第一名。关于它的故事有很多
震八方紫面昆仑侠
2020/10/26
1.8K0
都别拦着我,我要删库了
Linux 目录详解
在 Windows下,系统把硬盘划分为不同的磁盘分区,每个磁盘分配一个不同的盘符,比如 C:\、D:\ 等等。每个分区都单独存放自己的文件,有自己的根目录,比如 C:\、D:\ 就相当于 C 盘和 D 盘的根目录了。而 Linux 则是将整个硬盘统一管理,整个系统只有一个根目录 "/",所有的文件和目录都是在这个根目录下,它表示 Linux 文件系统的起点。另外要注意一点,Linux 中目录间的间隔使用的是斜线 (forward slash)"/",而 Windows中用的是反斜线 (back slash)"\"。
Coding十日谈
2020/08/13
7.7K0
Linux 目录详解
DBA生存警示:系统级误删除案例及防范建议
编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》一书收录了大量现实案例,现在整理分享给大家,共为警示。 案例分享 ---- 误删除Oracle软件 硬件维护人员删除归档日志的时候,把节点2的整个ORACLE_HOME都删除了。在删除的时候没有注意到目录改变了,还键盘做了一个向上的动作,刚好就是刚刚使用的 rm -rf *,然后一个下意识的动作回车就这么按下去了。 空格
数据和云
2018/03/05
1.4K0
DBA生存警示:系统级误删除案例及防范建议
Linux 中的文件与目录管理解析
使用绝对路径时,无论当前工作目录在哪里,都可以准确地指定文件或目录的位置。相对路径则根据当前工作目录的位置来确定文件或目录的位置,更加灵活和方便。
智能计算老群群
2024/04/26
1230
如何在 Linux 上恢复误删除的文件或目录?
Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。
杰哥的IT之旅
2020/08/24
39.6K0
如何在 Linux 上恢复误删除的文件或目录?
Linux系统学习笔记-目录架构-常用命令
uname  -a     查看内核版本        
MonroeCode
2018/01/10
1.3K0
rm -rf 又一起惨案,该给Linux整一个回收站了!
没错!懂一点Linux 基础的都明白这个命令! rm -rf 。 这个命令用不好的话,杀伤力奇高!
星泽V社
2022/03/02
9520
基于 Github Actions 自动部署 Hexo 博客
前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包、上传、解压和刷新 CDN,非常麻烦。我的服务器配置也不高 2C2G 无法安装 Jenkins,所以采用了比较简单和免费的 Github Actions 来进行打包、上传。然后我自己写了一个 Agent 来做解压和刷新 CDN 的工作,整套流程完全自动化。
晓晨
2022/09/07
9750
基于 Github Actions 自动部署 Hexo 博客
Oracle软件安装目录满的清理方法
这是Oracle数据库日常运维中很常见的一个场景,安装目录满有时不光会导致无法记录最新数据库的日志信息,导致遇到问题无法查到最新的日志信息,还会引发一些奇怪的问题。
Alfred Zhao
2019/05/24
2.3K0
五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?
DBA的悲伤,不是没有做备份,就是没有做有效的备份。日光之下,并无鲜事。 都说一个没有删过数据库的DBA,职业生涯是不完整的,不过当你删过之后,你的DBA生涯可能就完(整)了。 今天我们要讲一个做了五重备份但无一有效备份最终导致数据库恢复失败全面崩溃的故事。 今日,据GitLab.com官方网站发布声明称由于其产品数据库问题导致的网站无法正常访问。GitLab网站的主要功能如下: GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公
数据和云
2018/03/07
1.2K0
五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?
相关推荐
就这样把根目录删了!!!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档