rm-protection 是一个尽可能从根源防止误删除的 rm 命令替代品,适用于 Linux、macOS 系统,对于那些马大哈用户,再也不用担心一不小心 rm -rf / 了…@Appinn
GitLab 事件 是前几天一个比较悲伤的故事,由于垃圾信息的原因,GitLab 的管理员在本应该删除 1 号服务器的某个目录时,不小心删除了 2 号服务器的内容,将近 300G,发现后终止仅保留了 4.5G 内容…而这个失误仅仅是在终端中输入了删除命令 rm -rf /path。
有趣的是,当时 GitLab 决定在 Youtbue 实时直播数据恢复过程,最终的结果是丢失了几个小时的数据,以及让该管理员看 10 个小时视频作为惩罚 😂
于是,来自发现频道的 @me92 同学觉得,rm 命令这种不算缺陷的缺陷是不是要改革一下。
rm-protection 与原生 rm 命令完全兼容,并提供了一个命令用于保护文件或目录,设置一个安全问题和回答,之后回答正确后,才会执行删除命令。
rm-protection 就是这样一个轮子。它与原生 rm 完全兼容(事实上它会将参数原封不动地传递给 rm),唯一不同的是,它在执行 rm 前将检查你要删的每一个文件或者目录是否被「保护」。rm-protection 提供了一个命令 protect 来保护文件或者目录,通过这个命令你可以为一个文件或者目录设置一个安全问题与回答。
若是 GitLab 管理员提前将数据库目录保护起来,设置问题和回答为分别「你在删哪个数据库?」「生产」。当管理员回答「测试」时,就会自动中止并提示,防止酿成惨剧。
源代码已经在 GitHub 上了(https://github.com/alanzchen/rm-protection)。程序也已经被打包到 PyPi。只需要 pip install rm-protection 就可以使用 rm-p 和 protect 命令了。想要真正启用,需要再执行 alias rm=”rm-p” 并将此行加入到 .bashrc 或类似配置文件中。之后就可以像正常 rm 一样来删除了。
具体用法请参考 GitHub 页面,下面来看一下使用效果:
呃…其实,不带有 -rf 参数,系统是会问你是否删除的,但是所有人使用 rm 都会默认带 -rf 吧?
当然,这让青小蛙想起了经典的 Windows 删除确认对话框,一切看起来是那么的和谐 😂
习惯之后就没有效果了。
在用trash,然后把rm alias成trash。再也不怕误删了
trash 才是最优解!
然后顺手跟一个 empty trash
这处理还算人性化
要是在国内,肯定是临时工干的
其实酷壳上的那篇文章才是正确做法,不要直接在线上敲命令,没人知道你敲了什么命令
删除确认只会让人毫不犹豫、看也不看地 点/输入确认而已
为了安全考虑,rm命令的f选项尽量不要用,i选项尽量启用。
Win上主要还是回收站,先不删掉
不建议alias rm,因为这样会让人在操作的时候掉以轻心,毕竟不能保证每台机器都安装这个工具。如果习惯了这个工具,将来可能会造成大问题。
看十个小时视频有点过了吧(笑)
Win上一直都是Shift+Delete,然后Enter,一气呵成,有几次就删错了(泪)