首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)

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

作者头像
SEian.G
发布2021-03-03 09:57:27
发布2021-03-03 09:57:27
8180
举报
文章被收录于专栏:SEian.G学习记录SEian.G学习记录

今天是一个难忘的日子,当时本来想清除主机上面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安装包

代码语言:javascript
复制
[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、开始安装

代码语言:javascript
复制
[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、安装成功后我们的系统就有了以下工具.

代码语言:javascript
复制
[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命令

代码语言:javascript
复制
[root@VM_54_118_centos ~]# vim .bashrc 
# .bashrc
#alias rm='rm -i'
alias rm='trash-put'

5、实验测试

删除测试:

代码语言:javascript
复制
[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

还原删除的文件

代码语言:javascript
复制
[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中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA的辛酸事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档