rm -rf * 前一定一定要看清当前目录

2023-09-23 23:10:52 +08:00
 mikewang

惨!数据差点归零。


起因是这样的:

想要写一个 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 ,心惊胆战地回滚到了一天前的快照,暂时没有发现特别大的损失。这才松了一口气。

吓死了,下次删文件前一定要注意当前目录啊。。。

7323 次点击
所在节点    Linux
48 条回复
mikewang
2023-09-24 13:03:05 +08:00
@jqtmviyu @loading #12 #15 alias 不错,不过像我这样在 docker 内调试的还是看一下,全新的环境里没有 alias 。
这次文件系统定时快照救了我,这个大概是最后一道防线。

@winstars #16 ./* 在根目录也会一样删光。这次事故给我的经验是,还是检查下路径为好。

----

总之,十年 Linux 老用户栽在这上面非常滴惭愧,各种命令因为熟练已经开始闭眼打了,系统也很忠诚地执行了我 “清空当前目录” 的指令。命令没输错,执行很精准,只是当前目录( docker 进入的默认目录)是个根。[裂开]
rekulas
2023-09-24 13:30:06 +08:00
@jqtmviyu 吓得我马上又给你改成 alias cd="rm -rf"
alias alias="reboot"
realpg
2023-09-24 13:38:00 +08:00
什么野鸡教出来的运维……
rm -rf 相对的基本都被开除了
realpg
2023-09-24 13:38:28 +08:00
@winstars #16
这也没区别
正确的做法是到上级目录删除整个目录本身 指定名称 需要重建再重建
BaiLinfeng
2023-09-24 13:48:24 +08:00
上几周我就是 rm -rf ./*直接把系统干废了,就是没看清目录,直接在根目录执行了,还好是我自己本地的环境。想修复可惜连 ssh 都无法进入了,只要重新安装系统了
diagnostics
2023-09-24 14:28:48 +08:00
看起来 ubuntu 一定让你用 ubuntu 这个用户登陆是有道理的。
rev1si0n
2023-09-24 14:30:46 +08:00
我就吃过亏,然后用了 safe-rm ,用了还不放心,定时任务定时从 bash history 中删除所有 rm 命令😂
hsfzxjy
2023-09-24 14:31:36 +08:00
看到首页有两个这个帖子我就绷不住了
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
godymoon
2023-09-24 15:35:14 +08:00
@Nugine0 一进来就看到连续两个 rm -rf 的,笑死了
fdd92
2023-09-24 17:06:00 +08:00
删除文件夹最好别用相对路径呀。。
passive
2023-09-24 18:15:08 +08:00
@ob 别带 -f

正常操作一般用不到 -f
mauis
2023-09-24 18:38:33 +08:00
非要用 rm 用绝对路径好了。别相对
dimpleok
2023-09-24 18:46:27 +08:00
可以参考,https://zhuanlan.zhihu.com/p/658109345 (利用技术手段避免误删除根目录).
jellyspot
2023-09-24 21:05:28 +08:00
我用 rm 命令要求都是必须跟完整路径,不要怕麻烦,麻烦点安全
James369
2023-09-24 22:28:07 +08:00
我一般删除前先 mv /tmp/, 完了过几天再删除
bobryjosin
2023-09-24 22:39:40 +08:00
我的习惯一般要删也是完整路径,删完指定目录再 mkdir 一个,麻烦是麻烦了点但是确实安全,尤其是* -f ,就算要用一定要再看一眼,要明白自己在干什么。
lovelylain
2023-09-24 22:50:04 +08:00
之前给移动硬盘格式化 btrfs ,把娃的照片从手机剪切到上面,后来强迫症喜欢删除空目录,一个不小心把移动硬盘根目录删了,花了一天一夜尝试恢复,只恢复出一些不重要的文件,后来养成了定期快照的习惯。
Love4Taylor
2023-09-24 22:52:16 +08:00
所以要养成有事没事 ls 的习惯
Inzufu
2023-09-24 22:55:33 +08:00
看到标题就已经想笑了)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/976554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX