避免 rm -rf /*删库:建立回收站机制
1. 写在前面
rm -rf /*
的形式有很多:
rm -rf /*
(直接潇洒走一回)rm -rf $abc/*
(变量所指不存在)rm -rf abc /*
(多了一个硬核空格”“)
- …
它的威力,懂的人自然懂。
对于此,除了重新认识 rm
、rm -rf
以及空格,也要做一些安全措施,避免此类事情的再次发生。
2. 两种思路
以下两种思路,可能在本质上来看都是一样的:
- 将需要删除的文件移动(而不是删除)到指定的目录,比如
/trash/
- 定期清理
/trash/
下的文件
但是在具体使用上还是有些区别(推荐方法二)
2.1 方法一:rm 指向mv实现的函数
参考:写了Bug,误执行 rm -fr /*,我删删删删库了,要跑路吗?
过程
-
创建回收站目录:
mkdir /home/.trash
-
编写 remove.sh 脚本
-
修改
~/.bashrc
, 用我们自建的remove.sh
替代rm
命令 -
设置 crontab,定期清空垃圾箱
如设置每天 0 点清空垃圾箱:
(1)进入编辑crontab -e
(2)写入以下内容:
0 0 * *<