
惨!数据差点归零。
起因是这样的:
想要写一个 Dockerfile ,先建个容器敲一下:
docker run --rm -v /mnt/sda1:/mnt/sda1 -it alpine 为了方便,把数据盘也挂上去了。
然后做了一些复制解压:
cp /mnt/sda1/somefile.tar.gz . tar xzvf somefile.tar.gz cd somefile-v1.0 ls 看了看内容觉得不是自己想要的,回上一级目录准备删掉:
cd .. rm -rf * 我想当然地认为自己在 /root 下面,这里原本应该什么都没有。然而一回车:
rm: can't remove 'dev/console': Resource busy rm: can't remove 'dev/urandom': Resource busy rm: can't remove 'dev/random': Resource busy rm: can't remove 'dev/tty': Resource busy rm: can't remove 'dev/full': Resource busy ...^C^C^C^C^C^C^C^C^C^C^C 。。。是在 / 啊!!!然后 /mnt/sda1 的东西自然也是被删了一堆,吓坏我了。
好在是 ZFS ,心惊胆战地回滚到了一天前的快照,暂时没有发现特别大的损失。这才松了一口气。
吓死了,下次删文件前一定要注意当前目录啊。。。
1 Nugine0 2023-09-23 23:16:51 +08:00 笑死,上一个还热乎呢,这又来一个 https://v2ex.com/t/976473 |
2 BeautifulSoap 2023-09-23 23:19:18 +08:00 via Android 问题的次要原因还在 alpine 默认只有 sh ,而 sh 不像 bash ,zsh 那样显示目前在哪个目录。 在 alpine 里操作的时候经常就出现不用 pwd 搞不清自己在哪个目录的情况。 |
3 BeautifulSoap 2023-09-23 23:25:05 +08:00 via Android 试了一下,干,怎么 alphine 下的 sh 又显示当前目录了。难道记差了 |
4 mikewang OP @BeautifulSoap #3 alpine 现在默认 shell 是 /bin/ash ,其实是显示当前目录的。不过 docker 默认进去的目录就是 /,提示就是:/ #,比较不显眼 |
5 chenliangngng 2023-09-23 23:57:38 +08:00 别用*,我要删也是自己选目录删的 |
6 vvhy 2023-09-24 00:13:55 +08:00 我装了个 safe-rm |
7 wipbssl 2023-09-24 00:28:21 +08:00 加入参数 f 时都写绝对路径吧 |
8 wipbssl 2023-09-24 00:30:27 +08:00 为什么你们都喜欢加-f 呢? |
9 yeqizhang 2023-09-24 00:47:50 +08:00 via Android 我觉得你挂载的目录太大了,然后其实和你描述 docker 这块也没啥关系吧,你解压不是在宿主机解压再删除的么,除了看清目录,建议不要用*,除非是*xxx 这样 |
10 xiaoranj 2023-09-24 01:01:00 +08:00 我还以为在说鼎桥成都公安的事呢 |
11 mikewang OP @yeqizhang #9 不是的,解压、删除都是在 docker 临时容器内进行的,为了写 Dockerfile 前测试下。 一般来说 docker 内就算全删了也没事,最多就是重建个容器,问题在于我映射了宿主路径。 |
12 jqtmviyu 2023-09-24 02:49:37 +08:00 吓得我 `alias rm='rm -i'` |
13 ysc3839 2023-09-24 03:53:36 +08:00 via Android @BeautifulSoap bash 默认也不会显示目录吧?都是发行版的 profile 给配置了个会显示目录的 PS1 所以才显示的 |
14 passive 2023-09-24 04:21:36 +08:00 via Android 有一次 rm -r $foo/* 结果 $foo 拼错了或者没定义。 幸好平时的习惯把数据拯救了: 我会在各个根目录上 : > ! ; chmod 000 ! rm 的时候首先删到这个 ! 文件,没有权限会出错,不会继续删下去了。 |
15 loading 2023-09-24 07:09:26 +08:00 via iPhone alias rm=trash |
16 winstars 2023-09-24 08:21:59 +08:00 via Android 改成./*会死吗,这么偷懒 |
18 mobmoob 2023-09-24 09:10:09 +08:00 别用*就好 |
19 vcn8yjOogEL 2023-09-24 10:52:26 +08:00 rm 前先 ls |
20 julyclyde 2023-09-24 11:37:28 +08:00 @BeautifulSoap shell 是否显示当前目录不是由 P1 管理吗? 那个 sh 是不支持 PS1 ? |
21 mikewang OP |
23 realpg PRO 什么野鸡教出来的运维…… rm -rf 相对的基本都被开除了 |
25 BaiLinfeng 2023-09-24 13:48:24 +08:00 上几周我就是 rm -rf ./*直接把系统干废了,就是没看清目录,直接在根目录执行了,还好是我自己本地的环境。想修复可惜连 ssh 都无法进入了,只要重新安装系统了 |
26 diagnostics 2023-09-24 14:28:48 +08:00 看起来 ubuntu 一定让你用 ubuntu 这个用户登陆是有道理的。 |
27 rev1si0n 2023-09-24 14:30:46 +08:00 我就吃过亏,然后用了 safe-rm ,用了还不放心,定时任务定时从 bash history 中删除所有 rm 命令 |
28 hsfzxjy 2023-09-24 14:31:36 +08:00 via Android 看到首页有两个这个帖子我就绷不住了 |
29 ob 2023-09-24 14:49:25 +08:00 @passive 试验了一下,好像还是可以删除 [root@VM-8-10-centos a]# : > ! ; chmod 000 ! ; [root@VM-8-10-centos a]# ll total 0 ---------- 1 0 0 0 Sep 24 06:48 ! [root@VM-8-10-centos a]# rm -rf ! [root@VM-8-10-centos a]# ll total 0 |
31 fdd92 2023-09-24 17:06:00 +08:00 删除文件夹最好别用相对路径呀。。 |
33 mauis 2023-09-24 18:38:33 +08:00 非要用 rm 用绝对路径好了。别相对 |
34 dimpleok 2023-09-24 18:46:27 +08:00 可以参考,https://zhuanlan.zhihu.com/p/658109345 (利用技术手段避免误删除根目录). |
35 jellyspot 2023-09-24 21:05:28 +08:00 我用 rm 命令要求都是必须跟完整路径,不要怕麻烦,麻烦点安全 |
36 James369 2023-09-24 22:28:07 +08:00 我一般删除前先 mv /tmp/, 完了过几天再删除 |
37 bobryjosin 2023-09-24 22:39:40 +08:00 我的习惯一般要删也是完整路径,删完指定目录再 mkdir 一个,麻烦是麻烦了点但是确实安全,尤其是* -f ,就算要用一定要再看一眼,要明白自己在干什么。 |
38 lovelylain 2023-09-24 22:50:04 +08:00 via Android 之前给移动硬盘格式化 btrfs ,把娃的照片从手机剪切到上面,后来强迫症喜欢删除空目录,一个不小心把移动硬盘根目录删了,花了一天一夜尝试恢复,只恢复出一些不重要的文件,后来养成了定期快照的习惯。 |
39 love4taylor PRO 所以要养成有事没事 ls 的习惯 |
40 Inzufu 2023-09-24 22:55:33 +08:00 via Android 看到标题就已经想笑了) |
41 guanzhangzhang 2023-09-24 23:19:38 +08:00 非 bash 那种小 sh 的,WORKDIR 缺省都是 / |
42 iseki 2023-09-24 23:32:13 +08:00 我现在 rm 这种命令所有出现 * 的都得使劲确认才敢按比 / 危险多了 |
43 iwwftlan 2023-09-25 00:20:45 +08:00 最近经常看到 rm 的瓜, 前几天刚看了一个成都某公司员工把公安系统删库了。。。 |
44 pocarisweat 2023-09-25 00:33:57 +08:00 做破坏性操作参数带*的时候,我会按 tab 把*给展开再确认一遍 |
45 mikewang OP #44 @pocarisweat 这个是 zsh 的特性吧,比 bash 强 |
46 89ao 2023-09-25 13:12:26 +08:00 rm -rf 不加绝对路径的真的是看多了。 再不济 mv 到/tmp 都不麻烦,要养成习惯啊别等人说 |
47 GoldenSheep 2023-09-25 18:42:48 +08:00 哈哈哈 上星期我刚 cd /etc; rm -rf ./* 就少打了一个点 |
48 hGaHLRyC 2023-10-01 03:42:08 +08:00 养成 mv 到 tmp 才是好习惯。 |