热点推荐
ZOL首页 > 服务器 > 知识学堂 > Linux > Linux的基本:为网上邻居配个垃圾桶

Linux的基本:为网上邻居配个垃圾桶


天新网 【转载】 2009年03月24日 19:02
相信大家都有过这样的经历:网络上的一个文件不小心被你在网上邻居的共享中删除了,而大家都知道网上邻居的文件一删除就等于彻底删除,既不会出现在服务器上的回收站也不会出现在本机的回收站中。想找回这个文件?很抱歉,只能用你的文件来换取一个教训。那么有没有什么解决方案来实现网上邻居的回收站?帮我们避免这样的误操作呢?Windows环境下,我还未去研究是否有此类的解决方案,而Linux下为我们提供的Samba已经可以很完美地做到这一点。

这里我们需要Recycle VFS Module的帮助,它可以让我们在Samba上实现回收站的功能,有了它,我们从网上邻居被删除的文件将会被移动到一个指定的目录下。如果没有在配置文件设置删除的话将不会被自动删除,由用户自己清理回收站。现在就让我们来看看如何配置这个功能。考虑到现在尚存在应用Samba 2版本的用户,本文分别列出Samba 3和Samba 2 的Samba-Recycle配置实例。

SAMBA 2的Samba-Recycle设置方法

步骤1.下载VFS模组

下载地址:http://www.ec-base.com/download/smbrecycle.tar.gz

下载解压后,使用GNU autoconf script 和 Makefile 进行安装:


[becks@ec-base vfs] ./configure [becks@ec-base vfs] make

步骤2. 将相应的模组复制到任意路径,比如/usr/lib/Samba/vfs:

[becks@ec-base vfs]cp recycle/recycle.c /usr/lib/Samba/vfs

步骤3. 建立和编辑Recycle.conf:

[becks@ec-base vfs]cp recycle/recycle.conf /etc/Samba/

修改后的Recycle.conf文件如下:

QUOTE: name = .recycle/%U mode = KEEP_DirectorIES|NOVERSIONS|TOUCH maxsize = 0 exclude = *.tmp|*.temp|*.o|*.obj|~\$* excludedir = /tmp|/temp|/cache noversions = *.doc|*.xls|*.ppt

现在我就其参数进行简单说明:

Options for recycle.conf: name

位于共享文件根目录回收站的名称,这里可以允许使用Smb.conf的变量,比如本文使用的%U。

例:name = .recycle/%U mode

KEEP_DIRECTORIES:是否保留被删除文件的目录层次。

例:如果你删除了共享文件下/ec-base/becks/test.txt文件,开启此选项,你在回收站看到的也将是保留/ec-base/becks/而不是单独的test.txt。

VERSIONS : 当遇到相同文件名的时候,是否进行标号。当遇到相同文件名的时候被删除放置回收站的时候,时间较后被删除的文件将会被命名为filename(Copy #1),依次类推。

例:删除test.txt.

test.txt test.txt (Copy #1) test.txt (Copy #2)

TOUCH : 当移动文件到回收站的时候更新文件的访问日期。

Mode示例:

mode = KEEP_DIRECTORIES|VERSIONS|TOUCH maxsize

移动到回收站文件的最大文件容量,默认为零。

例: maxsize = 0 exclude

设置不被移动到回收站的文件类型,比如一些临时文件等等。

例:

exclude = *.tmp|*.temp|*.obj|~\$*|*.\$\$\$ excludedir

排除删除时不被移动到回收站的目录。

例:

excludedir = /tmp|/temp|/trash noversions

不创建相同文件名称文件的副本。

例: noversions = *.doc|*.xls|*.ppt

创建或者修改后保存退出即可。

步骤4.修改smb.conf以应用Recycle Module

在Smb.conf中添加以下2行:

vfs object = /usr/lib/Samba/vsf/recycle.so 前面所复制模组的路径。

vfs options = /etc/Samba/recycle.conf recycle.conf的路径。

例:

QUOTE: [ec-base] comment = ec-base website path = /www/www.ec-base.com read only = No create mask = 0750 vfs object = /usr/lib/Samba/vsf/recycle.so vfs options = /etc/Samba/recycle.conf

步骤5. 为了让我们上面的设置生效,请重新启动服务器的Samba服务:

[becks@ec-base www.ec-base.com]service smb restart

OK,只是简单的几个步骤,便可在SAMBA v2上实现了SAMBA Samba-Recycle功能。

SAMBA 3的Samba-Recycle设置方法

Look完SAMBA 2的Samba-Recycle设置方法,现在让我们再来看看SAMBA 3如何实现Samba-Recycle,在Samba 3中我们只需要修改Smb.conf便可以实现此功能:

/etc/Samba/smb.conf [ec-base] comment = ec-base website path = /www/www.ec-base.com read only = No create mask = 0750 vfs object = /usr/lib/Samba/vsf/recycle.so vfs options = /etc/Samba/recycle.conf browseable = yes valid users = becks,@ec-base vfs object = recycle #加载recycle模组 recycle: keeptree = yes #保留被删除文件的目录层次 recycle: repository = ../Recycle/%u # recycle: repository 只能指定相对路径,也就是相对此共享文件的路径。无法使用绝对路径,后面的 %U 为用户账号。 recycle: exclude = .tmp|.temp|.o|.obj #设置不被移动到回收站的文件类型 recycle: versions = yes #若有相同文件名称时,用编号进行标识

设置完后重启SMB服务,这时候用户在Samba(网上邻居)上删除的文件就会自动移至“recycle: repository”所指定的相对路径里了。而被移动到“recycle: repository”目录后的文件,其权限为600,也就是所只有文件所有者才有权修改和查看。需要注意的是“recycle: repository”目录的权限,需要让用户有权限写入文件,不然就会产生错误,而该文件也会被直接删除。

由于回收站的设置当然你也要付出磁盘空间的代价,记得像清理自己PC的回收站般定期清理Samba-Recycle bin,出现错误信息时候,用户可以通过查看Samba的log来确认错误所在。一个非常实用的Linux下的网络回首站就建立好了,在以后的工作中相信它会发挥非常大的功效的。

 

给文章打分 5分为满分(共0人参与) 查看排行>>
频道热词:LED照明  工作站  云计算  
视觉焦点
服务器知识学堂热点
排行 文章标题
TOP10周热门服务器排行榜
  • 热门
  • 新品
  • 系列
查看完整榜单>>