禁用特定共享的samba vfs回收对象

我正在使用samba回收插件,并在我的[global]部分有以下内容

recycle:exclude = *.~lock* recycle:repository = .recycled recycle:versions = yes recycle:keeptree = yes vfs objects = recycle 

我想为特定的共享禁用此function。 我试过在共享定义中放入vfs objects = ,但是这没有效果。 我也试过把recycle:exclude = *放在共享定义里面,但是这也是行不通的。 最后,我尝试设置(在[全球]部分) recycle:exclude_dir = /home/path/to/my/dir/这看起来很有希望从手册页

我知道如何完全禁用.recycle,但这不是我想要的。

[编辑build议由有用的评论者下面!]

问题的path由Dropbox守护进程监视。 这就是为什么我不需要一个回收站 – 这将有效地导致第二个带宽占用上传,并且.Recycled /副本是不必要的,因为Dropbox版本无论如何。

有一些工作,只是分配权限00​​0到你的共享上的回收站文件夹,它仍然会在那里,但没有文件将被写入它。 我必须在我的备份文件夹上执行此操作,因为Windows会写入并删除备份的文件。

我不认为这是可能的只有一个共享使用samba回收站插件,你可能会更好,用cron运行每分钟或左右,清理回收站共享内的文件夹。

像rm -rf / home / path / to / my / dir / *添加到cron中可以节省您担心sambaconfiguration的麻烦。

使用crontab -e使用cron安排作业并添加该行

 */10 * * * * /bin/rm -rf /home/path/to/my/dir/* 

使其每10分钟运行一次并清除/home/path/to/my/dir/

如果它确实是一个只能在全局工作的插件的限制,那么特定于这种情况的解决scheme只是将.recycledpath更改为/ somewhere / else /,然后,如有必要,将符号链接到/ somewhere / else / …从其他path。 这显然是混乱的,符号链接在混合的操作系统环境中会导致问题(例如,当Windows获得服务器远程parsing时,Linux将尝试在本地parsing)。

只需放入分享定义:

  recycle:exclude = *.* 

至less在我使用Samba 4.1.17的Debian 8.0 x86_64机器上工作。

我发生什么事了

我在工作中激活了Samba的文件服务器上所有共享的回收站。 例如:

 [global] ... recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache recycle:keeptree = yes recycle:repository = /var/samba/trash/%S recycle:versions = yes ... 

我已经设置了一个RECYCLE共享,只是为了方便恢复意外删除的文件:

 [RECYCLE] path = /var/samba/trash writable = yes 

然后我意识到,如果从客户端机器上,我从任何共享中删除了一个文件,然后将该文件从RECYCLE共享剪切并粘贴到其原始共享中,Samba创build了RECYCLE共享的备份,其中包含恢复的文件(即回收站本身的回收站)。

我发现的解决scheme是从Samba回收站function中排除RECYCLE共享:

 [global] ... recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache recycle:keeptree = yes recycle:repository = /var/samba/trash/%S recycle:versions = yes ... [RECYCLE] path = /var/samba/trash recycle:exclude = *.* writable = yes 

要禁用特定共享的vfs回收,只需将其放在共享内:

 vfs objects = 

所以要启用所有共享但不是“norecyclebin”的vfs回收,你的configuration应该是这样的:

 [global] ... vfs objects = recycle recycle:repository = RECYCLER recycle:keeptree = Yes recycle:versions = Yes ... [share] ... [anothershare] ... [norecyclebin] ... # disable recycle bin for this share vfs objects =