• 对于注定会优秀的人来说,他所需要的,只是时间----博主
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 本站开启了防爆破关小黑屋机制,如果您是正常登录但被关进小黑屋,请联系站长解除!

使用trash-cli给Linux服务器加一个回收站的功能

一些实操 eryajf 2周前 (10-30) 146°C 已收录 0个评论
本文预计阅读时间 9 分钟

有些让人痛心的经历,会让你成长,我相信,所有开始使用这个工具,以及开始愿意去部署这个工具的人,应该都是有遭受过误删除所带给自己的那种恐慌以及无奈。

我也一样,昨天在预发环境调试一个服务的部署脚本,其中有一个删除 tomcat 的 webapps 下的所有文件的操作,这原本是正常部署当中的一个正常操作,只不过,这个地方前边的路径都用了一个变量来表示的,以往也都是这么使用的,而这次,因为情况不太一样,所以调整了上边的变量,结果就悲剧了,也就是在前边定义了一个 a 的变量,后边执行了rm -rf $A/*,这个地方因为前后不一致,脚本就认为$A是空,直接从/下开始删了,还好这是预发环境,还好这是普通用户执行的,但是,已经影响了很多了,所幸,后来通过两天前的快照将主机进行了恢复。

所以,我打算了解一下回收站的事儿,就走进了开源工具trash-cli。地址如下:

trash-cli

1,安装。

1,安装方法一。

安装非常简单,使用两条命令搞定。

yum install -y python-setuptools.noarch
easy_install trash-cli

一般情况下,没啥问题就安装成功了。

2,安装方法二。

如果主机内核还是 2.6 的 CentOS6,那么可以通过如下方式安装,这种安装方式,适用于`CentOS6`以及`CentOS7`:

wget https://github.com/andreafrancia/trash-cli/archive/master.zip

unzip master.zip

cd trash-cli-master

python setup.py install

如果最后一步安装不报错,那就成功了。

有时候这种方式安装完成之后,可能无法在系统层面适用对应的命令,可以加入如下一条命令:

ln -s /usr/local/python/bin* /usr/bin/

即可正常使用!

2,了解功能。

安装之后,系统会新增几个工具:

[root@docker ~]$ls /usr/bin/ |grep trash
trash
trash-empty
trash-list
trash-put
trash-restore
trash-rm

说明:

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

3,添加 rm 别名。

直接在系统当中添加如下命令:

[root@docker ~]$echo "alias rm='trash-put'" >> /etc/bashrc

[root@docker ~]$source /etc/bashrc

虽然在 Github 中作者并不建议这么做,而是建议当使用 rm 的时候输出一段提示,作者原话说:

Can I alias rm to trash-put?
You can but you shouldn't. In the early days I thought it was good idea do that but now I changed my mind.
The interface of trash-put seems to be compatible with rm it has a different semantic that will cause you problems. For example, while rm requires -R for deleting directories trash-put does not.
But sometimes I forgot to use trash-put, really can't I?
You may alias rm to something that will remind you to not use it:
alias rm='echo "This is not the command you are looking for."; false'
If you really want use rm simply prepend a slash:
\rm file-without-hope
Note that Bash aliases are used only in interactive shells, so using this alias should not interfere with scripts that expects to use rm.

但是我觉得这样也是可以的,配置方便,已用。

4,使用示例。

配置完成之后,我们可以正常的使用 rm 命令。

1,创建示例文件。

[root@docker opt]$touch a b c
[root@docker opt]$mkdir 1 2 3
[root@docker opt]$ls
1  2  3  a  b  c

2,将其一并删除。

[root@docker opt]$rm -rf ./*
[root@docker opt]$ls

3,使用命令查看。

[root@docker opt]$trash-list
2018-10-30 16:21:00 /opt/1
2018-10-30 16:21:00 /opt/2
2018-10-30 16:21:00 /opt/3
2018-10-30 16:21:00 /opt/a
2018-10-30 16:21:00 /opt/b
2018-10-30 16:21:00 /opt/c

这个时候,文件其实保存在$USER/.local/share/Trash/files下,可以用命令查看一下。

[root@docker opt]$ls /$USER/.local/share/Trash/files
1  2  3  a  b  c

4,恢复文件。

[root@docker opt]$trash-restore
   0 2018-10-30 16:21:00 /opt/1
   1 2018-10-30 16:21:00 /opt/2
   2 2018-10-30 16:21:00 /opt/3
   3 2018-10-30 16:21:00 /opt/a
   4 2018-10-30 16:21:00 /opt/b
   5 2018-10-30 16:21:00 /opt/c
What file to restore [0..5]: 0
[root@docker opt]$ls
1

通过每个文件前边的数字选择,从而判断恢复哪个文件,目前貌似没发现批量恢复的办法,当然你可以直接去目录下进行恢复。

5,删除回收站的单个文件。

[root@docker opt]$trash-rm 2
[root@docker opt]$trash-list
2018-10-30 16:21:00 /opt/3
2018-10-30 16:21:00 /opt/a
2018-10-30 16:21:00 /opt/b
2018-10-30 16:21:00 /opt/c

6,清空回收站。

[root@docker opt]$trash-empty
[root@docker opt]$trash-list
[root@docker opt]$

基本上用法就是这些用法,如果是普通用户,那么道理是一样的,这里的道理一样指的是普通用户使用此命令之后,也会在其家目录下生成一个回收站。


二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用 trash-cli 给 Linux 服务器加一个回收站的功能
赞赏
喜欢 (0)or
[如果想支持本站,可支付宝赞助]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮