Rox-filer与linux回收站
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/324)的形式标明文章原始出处和作者信息及本声明。使用环境:Ubuntu 7.04
Gnome自带的Nautilus,典型属于大而全的东西,而Xfce里面默认的Thunar要好一些,两者都有莫名其妙被关闭的经历,并且回收站还不在一个地方,Nautilus删除文件会移动到相应磁盘下的.Trash-用户名或者用户的$HOME/.Trash目录,而Thunar会把删除的文件移动到~/.local/share/Trash$目录下,还用files和info两个目录分别保存文件和信息。两个我都不太喜欢,决定换用小巧灵活的Rox-filer,唯一遗憾的是放弃了左边目录树的查看功能。
Rox不仅启动速度快,占用资源小,它的定制功能、文件选定等功能也非常灵活,比如Ubuntu中文 论坛里eexpress提供的那个“选定文件按照目录名打包”脚本放在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那样每个分区一个回收站目录。所以回收站里的数据会增长的很快,不过也有办法解决,单独给这个目录分配一个分区喽,还不用考虑磁盘碎片的问题。
参考:
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...脚本来完成,这样反而觉得更安全些了呢。

Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
sk*rt
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
If you like this then please subscribe to the
May 20th, 2007 at 20:14:13
RoxFiler我也遇到过退出的情况,一般出现在文件夹下有非常多的文件时,比如我的/usr/share/bin目录。
我用的是Xubuntu,结果用了一圈发现还是Thunar比较适合我。
回收站我觉得并不是必要的,因为我一般不随便删除东西,都是实在不行了,才大规模清理一下。
[Reply]
May 21st, 2007 at 1:44:32
看来哪个都不是完美的,thunar算是最好的折衷方案了
不过我现在调整成这样了:
在shell中不使用回收站功能,这样操作方便一些
在rox中启用回收站功能,整理文件的时候还是用rox要多一些,
这样更不容易丢失文件。
[Reply]
March 2nd, 2008 at 0:30:03
搜索到这里了。学习。好东西。
[Reply]