↓ Skip to main content
  1. Posts/

我在公司的服务器上执行了sudo rm -rf /*

·784 words·2 mins
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

TL;DR

  * 依靠人的小心谨慎是不靠谱的,人总有失误的时候
  * 看了下docker volume的权限机制,貌似是从docker image中继承。
  * 写了两个脚本,用来把rm alias到mv,避免手滑

又是一个可以摸鱼的周五晚上,sensespider系统测试了一天,fix了几个Bug,似乎可以发布了。系统一直是部署在了docker中..这几天测试产生了不少结果文件在host的volume中… 看着不舒服,干脆删一下好了

嗯?怎么所有者是root。。。那我sudo一下,也没什么大不了的嘛

然而手滑了… 打了个 sudo rm -rf /* …

写着 sudo rm -rf 命令的恶搞动图

提示无法删除/boot device is busy…

吓了一跳,下意识Ctrl-C…

重新在本地ssh到服务器,发现已经登不上去了…报错在找不到sh

看了一下,果然服务器的/bin 目录已经被删干净了…

google了一些从rm中恢复文件的帖子…

试图用 sudo apt-get install 装一些工具包…

这个时候已经提示我找不到apt-get 了。。。

非常慌。花了3分钟思考了我到目前为止的一生

看了下scp命令还在,赶紧趁着这个终端回话还没关,把本地的/bin目录拷贝了上来。

试了下,ssh命令可以用了。 这样至少后续的修复(在不麻烦IT同事的情况下)不用跑机房了。有些镇定。

然后发现apt-get 命令还是用不了。。。思考了1分钟。。。

然后发现服务器用的是centos…….

再试了各种常用命令,试了docker相关的各种命令,都可以正常工作。

然而整个人都被吓傻了….睡了一觉才回过神。

又查了下docker volume权限的事情,发现挂载目录继承docker image中用户的权限是feature Volumes files have root owner when running docker with non-root user. 那似乎就没办法了。

以及写了两个脚本,来避免手滑,分别是zsh环境和bash环境下的。

kkrm

Related

docker network 与 本地 network 网段冲突

·537 words·2 mins
起因: # 公司部署在 hk 的爬虫服务器突然挂掉了。后来发现只是在深圳办公区无法访问。排查后发现原因是 docker 的网络(包括 docker network 的 subnet 或者是某个容器的 ip)与该 host 在内网的 ip 段相同,导致冲突。

2018 to do list

·282 words·1 min
迫于最近的事情有点多,还是记录一下。 果然to do list什么的,还是要按照年份记录啊。

20171214

·480 words·1 min
记得之前被人在群里刷“宽神是我们的红太阳”还不理解…

20170929

·359 words·1 min
刚刚看了TBBT season 11 episode 1 Sheldon 和Amy 订婚了,Bernadette又怀孕了。