著名的 rm -rf 惨案!

2015年5月28日 携程疑似由于员工错误操作导致服务挂了
2017年2月2日 GitLab 管理员误删生产数据库
2017年4月5日 DigitalOcean 出现删除生产数据库的事故
2018年4月24日 Kuriko宣布 因机房技术人员 rm -rf /* ,导致 host 上所有数据丢失了
……
就在前一段时间博主竟然也踩坑了!!!!
线上环境发现某个目录下存在一些类似命名的.png 文件!于是乎想手动删掉。
咔咔输入以下命令

rm -rf *>.png

回车~替代rm命令的方法 - 图1
替代rm命令的方法 - 图2过去0.5 秒
替代rm命令的方法 - 图3过去 1秒
替代rm命令的方法 - 图4 过去1.5秒
替代rm命令的方法 - 图5 过去 2秒
替代rm命令的方法 - 图6 我擦,赶紧 Ctrl + C
赶紧看看目录情况 ls
替代rm命令的方法 - 图7 被删了将近一半的文件
我去!这怎么办?该目录文件基本上都是代码,备份还是6个月之前的,当初偷懒还直接在线上改过这个目录代码!!!!
跑路吧!!!
替代rm命令的方法 - 图8,说笑了,跑路不存在的,就算跑路也得修复这个问题呀!经过2天终于解决了。
为了防止这种事情发生!尤其是线上服务器!是时候给他增加一个回收站功能了!

开源项目

网上介绍的方式很多,这个给大家推荐一个开源的项目!
https://github.com/andreafrancia/trash-cli/

要求:

Python 3 (Python 2.7 也可以)
pip (在 Debian 上用 apt-get install python-pip 来安装 pip)

安装命令:

  1. pip install trash-cli

源码安装

为所有用户安装:

  1. git clone https://github.com/andreafrancia/trash-cli.git
  2. cd trash-cli
  3. sudo pip install .

为当前用户安装

  1. git clone https://github.com/andreafrancia/trash-cli.git
  2. cd trash-cli
  3. pip install .

为当前用户安装后你可能需要把以下代码添加到 .bashrc:

  1. export PATH=~/.local/bin:"$PATH"

卸载命令:

  1. pip uninstall trash-cli

使用方法

trash-cli 用于移动文件到回收站,同时会记录文件的原地址、删除日期和权限。trash-cli 和 KDE、GNOME、XFCE 使用同一个回收站,你可以在命令行或脚本运行 trash-cli。
trash-cli 提供以下命令:

  1. trash-put 把文件或目录移动到回收站
  2. trash-empty 清空回收站
  3. trash-list 列出回收站文件
  4. trash-restore 恢复回收站文件
  5. trash-rm 删除回收站文件

详细文档: https://github.com/andreafrancia/trash-cli/blob/master/README_zh-CN.rst