使用环境:Ubuntu 7.04
Gnome自带的Nautilus,典型属于大而全的东西,而Xfce里面默认的Thunar要好一些,两者都有莫名其妙被关闭的经历,并且回收站还不在一个地方,Nautilus删除文件会移动到相应磁盘下的.Trash-用户名
或者用户的$HOME/.Trash
目录,而Thunar会把删除的文件移动到~/.local/share/Trash$
目录下,还用files和info两个目录分别保存文件和信息。两个我都不太喜欢,决定换用小巧灵活的Rox-filer,唯一遗憾的是放弃了左边目录树的查看功能。
Rox不仅启动速度快,占用资源小,它的定制功能、文件选定等功能也非常灵活,比如[Ubuntu中文 论坛](http://forum.ubuntu.org.cn/about15116.html)里[eexpress](http://forum.ubuntu.org.cn/profile.php?mode=viewprofile&u=1239)提供的那个“选定文件按照目录名打包”脚本放在SendTo里面就非常好用,还有选定文件之后用Shift+!
输入mv "$@" somewhere
命令移动文件也是个非常不错的折衷方法。对于samfs和usb设备支持差了点,不过可以用Bookmark或者Ctrl+1
(红警的编队快捷键)来弥补。
但是和Nautilus和Thunar相比,Rox除了缺少目录树之外,还没有回收站的功能,这年月谁能保证不删错一个文件啊,ext3分区的文件恢复又相对麻烦,怎么办?用libtrash喽,和Rox一样都在Ubuntu的源中可以直接安装,我当前使用的版本是2.4-1。
libtrash和其他的回收站处理不同,他直接作用于linux的底层,相当于是在libc上挂了一个钩子(hook),凡是系统要进行删除文件操作的时候,不管是用rm命令,还是php的unlink函数,都会用到底层的libc,也就逃不过libtrash的掌控,所以说使用起来非常放心、省心。
也正由于libtrash的底层性,所以最好不要启用root用户的回收站功能,因为root对系统的管理要涉及到很多文件修改,如果被libtrash拒绝将会导致无法预知的结果,所以,默认的配置文件/etc/libtrash.conf
不要动,复制一份为$HOME/.libtrash
,作用用户级的配置文件来使用,默认设置已经比较好用了,不过我还是按照自己的习惯修改了几个地方:
#TRASH_CAN = Trash
# 和Ubuntu默认回收站目录保持一致
TRASH_CAN = .Trash
#IGNORE_EXTENSIONS = o;log;aux
# Log文件还是要保留的
IGNORE_EXTENSIONS = o;aux
#TEMPORARY_DIRS = /tmp;/var
# /var目录下的日志文件也要保护起来
TEMPORARY_DIRS = /tmp
libtrash是通过LD_PRELOAD机制来启用的,所以需要修改.bashrc
作相应的设置:
# libtrash setting
export LD_PRELOAD=/usr/lib/libtrash/libtrash.so.2.4
alias TrashOn='export TRASH_OFF=NO'
alias TrashOff='export TRASH_OFF=YES'
TrashOn
真正起作用的是第一句export,设置了这个环境变量之后,才真正的把钩子“挂上”,后面的alias是设置方便的开关命令,想像一下当你清空移动硬盘上的电影的时候,$HOME
被塞满到爆的情况吧,这时候也许就要临时关闭回收站功能了,设置了TRASH_OFF=YES
之后,删除的文件不会再被移动到回收站,而是真正的被系统删除。
除了TrashOff之外,配合Rox的SendTo机制,也许更方便一些,在~/.config/rox.sourceforge.net/SendTo
目录创建一个脚本trm-Truely_Remove
:
#! /bin/bash
# 暂时关闭libtrash,永久删除指定文件
export TRASH_OFF=YES
# 遍历指定的文件进行处理
for I in "$@"
do
rm -rf $I
done
export TRASH_OFF=NO
这样再有想直接删除的文件,在Rox中选定然后用Send to
发送到这个脚本进行处理就可以了,不过一定要确定是真正不要了的文件哦。
还剩下唯一一个缺点,就是libtrash只能指定一个回收站目录,一般是在用户的HOME目录下,如果需要管理的文件不在$HOME
下的比较多,比如我习惯使用的/big1
, /big2
等等,删除后的文件就全都存到$HOME
这里来了,即使他们不在一个分区,而不是像Naulius那样每个分区一个回收站目录。所以回收站里的数据会增长的很快,不过也有办法解决,单独给这个目录分配一个分区喽,还不用考虑磁盘碎片的问题。
参考:
- [LibTrash – DebianWiki](http://wiki.debian.org.tw/index.php/LibTrash)
- [linux上的垃圾箱](http://wenliang.wordpress.com/2007/02/09/trashonlinux/)
update @ 2007-05-19
按照上面的设置,从命令行启动的rox能够正常写入回收站,但从Xfce菜单上启动的就不行了,原因未知,不过可以自己写一个脚本中转一下:
#!/bin/bash
export LD_PRELOAD=/usr/lib/libtrash/libtrash.so.2.4
/usr/bin/rox
在默认的设置中,.Trash
目录是受保护的,不管是用shell还是用rox进入这个目录,文件都无法删除,但是可以用上面讲到的那个SendTo...
脚本来完成,这样反而觉得更安全些了呢。
RoxFiler我也遇到过退出的情况,一般出现在文件夹下有非常多的文件时,比如我的/usr/share/bin目录。
我用的是Xubuntu,结果用了一圈发现还是Thunar比较适合我。
回收站我觉得并不是必要的,因为我一般不随便删除东西,都是实在不行了,才大规模清理一下。
看来哪个都不是完美的,thunar算是最好的折衷方案了 不过我现在调整成这样了: 在shell中不使用回收站功能,这样操作方便一些 在rox中启用回收站功能,整理文件的时候还是用rox要多一些, 这样更不容易丢失文件。
搜索到这里了。学习。好东西。