• 欢迎访问DBA的辛酸事儿,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 欢迎大家关注博主公众号:DBA的辛酸事儿
  • 博文中若有错误的地方,请大家指正,大家的指正是我前进的动力

使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)

Linux SEian.G 6年前 (2019-02-15) 5419次浏览 已收录 0个评论

今天是一个难忘的日子,当时本来想清除主机上面data目录下的mysql8.0相关的数据文件的,进入mysql8.0的数据文件所在路径下,结果在执行rm -rf ./data/* 时打成了rm -rf /data/* ,一个回车下去,结果就悲剧了。整个/data目录下的所有文件全部删除了,瞬间奔溃了,真是欲哭无泪,索性之前主机做了快照备份的,立即回滚快照。
虽然最后解决了,但给我留下很大的阴影,为了避免以后才出现类似的情况,强烈建议生产环境中千万不要使用rm -rf 和 *这种操作,太危险了。删除了可以去回收站里面找,结果linux下还真有这样的工具,那就是使用 trash-cli。

trash-cli是一个使用 python 开发的软件包,包含 trash-put、restore-trash、trash-list、trash-empty、trash-rm等命令,我们可以通过这写命令,将文件移动到回收站,或者还原删除了的文件。
trash-cli的项目地址:trash-cli下载地址

1、下载trash-cli安装包

[root@VM_54_118_centos others]# git clone https://github.com/andreafrancia/trash-cli.git
Cloning into 'trash-cli'...
remote: Enumerating objects: 4556, done.
remote: Total 4556 (delta 0), reused 0 (delta 0), pack-reused 4556
Receiving objects: 100% (4556/4556), 1.17 MiB | 716.00 KiB/s, done.
Resolving deltas: 100% (2791/2791), done.

进入下载目录
[root@VM_54_118_centos others]# cd trash-cli/
[root@VM_54_118_centos trash-cli]# ll
total 112
-rw-r--r-- 1 root root   251 Feb  2 17:29 bugs.txt
-rw-r--r-- 1 root root  4766 Feb  2 17:29 check_release_installation.py
-rw-r--r-- 1 root root 17992 Feb  2 17:29 COPYING
-rw-r--r-- 1 root root  1432 Feb  2 17:29 CREDITS.txt
drwxr-xr-x 3 root root  4096 Feb  2 17:29 docs
-rw-r--r-- 1 root root   782 Feb  2 17:29 DONE.txt
-rw-r--r-- 1 root root  3408 Feb  2 17:29 HISTORY.txt
-rwxr-xr-x 1 root root   240 Feb  2 17:29 install-rpm.sh
drwxr-xr-x 2 root root  4096 Feb  2 17:29 integration_tests
drwxr-xr-x 3 root root  4096 Feb  2 17:29 man
-rw-r--r-- 1 root root    78 Feb  2 17:29 MANIFEST.in
-rw-r--r-- 1 root root  4774 Feb  2 17:29 README.rst
-rw-r--r-- 1 root root    24 Feb  2 17:29 requirements-dev.txt
-rwxr-xr-x 1 root root   293 Feb  2 17:29 setup.cfg
-rw-r--r-- 1 root root  2423 Feb  2 17:29 setup.py
drwxr-xr-x 2 root root  4096 Feb  2 17:29 tasks
-rw-r--r-- 1 root root   799 Feb  2 17:29 TODO.txt
drwxr-xr-x 2 root root  4096 Feb  2 17:29 trashcli
-rwxr-xr-x 1 root root   127 Feb  2 17:29 trash-put
-rwxr-xr-x 1 root root   126 Feb  2 17:29 trash-rm
drwxr-xr-x 2 root root  4096 Feb  2 17:29 unit_tests
-rw-r--r-- 1 root root   243 Feb  2 17:29 Vagrantfile

 

2、开始安装

[root@VM_54_118_centos trash-cli]# python setup.py install
.......
running install_scripts
copying build/scripts-2.7/trash-rm -> /usr/bin
copying build/scripts-2.7/trash-list -> /usr/bin
copying build/scripts-2.7/trash-put -> /usr/bin
copying build/scripts-2.7/trash-empty -> /usr/bin
copying build/scripts-2.7/trash -> /usr/bin
copying build/scripts-2.7/trash-restore -> /usr/bin
changing mode of /usr/bin/trash-rm to 755
changing mode of /usr/bin/trash-list to 755
changing mode of /usr/bin/trash-put to 755
changing mode of /usr/bin/trash-empty to 755
changing mode of /usr/bin/trash to 755
changing mode of /usr/bin/trash-restore to 755
running install_data
copying man/man1/trash-empty.1 -> /usr/share/man/man1
copying man/man1/trash-list.1 -> /usr/share/man/man1
copying man/man1/trash-restore.1 -> /usr/share/man/man1
copying man/man1/trash-put.1 -> /usr/share/man/man1
copying man/man1/trash-rm.1 -> /usr/share/man/man1
running install_egg_info
Writing /usr/lib/python2.7/site-packages/trash_cli-0.17.1.14-py2.7.egg-info

 

3、安装成功后我们的系统就有了以下工具.

[root@VM_54_118_centos ~]# ll /usr/bin/ | grep trash
-rwxr-xr-x    1 root root         123 Feb  2 17:43 trash
-rwxr-xr-x    1 root root         125 Feb  2 17:43 trash-empty
-rwxr-xr-x    1 root root         124 Feb  2 17:43 trash-list
-rwxr-xr-x    1 root root         123 Feb  2 17:43 trash-put
-rwxr-xr-x    1 root root         127 Feb  2 17:43 trash-restore
-rwxr-xr-x    1 root root         122 Feb  2 17:43 trash-rm

功能说明:

trash-put 将文件或目录移入回收站
trash-empty 清空回收站
trash-list 列出回收站中的文件
trash-restore还原回收站中的文件
trash-rm 删除回首站中的单个文件

 

4、安装完毕之后我们可以通过一些配置,用它替代 rm命令

[root@VM_54_118_centos ~]# vim .bashrc 
# .bashrc
#alias rm='rm -i'
alias rm='trash-put'

 

5、实验测试

删除测试:

[root@VM_54_118_centos ~]# rm -rf dump.rdb
[root@VM_54_118_centos ~]# ll ~/.local/share/Trash/files 
-rw-r--r-- 1 root root 123 Jul 17  2018 dump.rdb

[root@VM_54_118_centos ~]# trash-list
2019-02-02 18:02:33 /root/dump.rdb

还原删除的文件

[root@VM_54_118_centos ~]# trash-restore /root/dump.rdb
   0 2019-02-02 18:01:08 /root/dump.rdb.bak
   1 2019-02-02 18:02:33 /root/dump.rdb
What file to restore [0..1]: 1

还原成功
[root@VM_54_118_centos ~]# ll /root/dump.rdb 
-rw-r--r-- 1 root root 123 Jul 17  2018 /root/dump.rdb

备注:

trash-put命令会把我们想要删除的文件移动到~/.local/share/Trash/files 中。
相关信息记录在~/.local/share/Trash/info中。

使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)


如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。
转载请注明原文链接:使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)
喜欢 (3)
SEian.G
关于作者:
用心去记录工作,用心去感受生活,用心去学着成长;座右铭:苦练七十二变,笑对八十一难
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址