惨!数据差点归零。
起因是这样的:
想要写一个 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 5
笑死,上一个还热乎呢,这又来一个 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 10
有一次
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 是否显示当前目录不是由 PS1 管理吗?
那个 sh 是不支持 PS1 ? |
21
mikewang OP |
23
realpg 2023-09-24 13:38:00 +08:00
什么野鸡教出来的运维……
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 1
看到首页有两个这个帖子我就绷不住了
|
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 2023-09-24 22:52:16 +08:00 via iPhone
所以要养成有事没事 ls 的习惯
|
40
Inzufu 2023-09-24 22:55:33 +08:00 via Android 1
看到标题就已经想笑了)
|
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 1
做破坏性操作参数带*的时候,我会按 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 才是好习惯。
|