我正在使用 samba 回收插件,并且在我的 [global] 部分中有以下内容
recycle:exclude = *.~lock*
recycle:repository = .recycled
recycle:versions = yes
recycle:keeptree = yes
vfs objects = recycle
我想为特定共享禁用此功能。我尝试vfs objects =
在共享定义中放入,但这没有效果。我也尝试recycle:exclude = *
在共享定义中放入,但这也不起作用。最后我尝试设置(在 [global] 部分),recycle:exclude_dir = /home/path/to/my/dir/
从手册页
我理解如何完全禁用 .recycle但这不是我想要的。
[下面有帮助的评论者建议的编辑!]
有问题的路径由 Dropbox 守护程序监控。这就是我不想要回收站的原因——它将有效地导致第二次占用带宽的上传,并且 .recycled/ 副本是不必要的,因为 Dropbox 无论如何都会对文件进行版本控制。
答案1
有一点解决方法,只需将权限 000 分配给共享上的回收站文件夹,它仍会存在,但不会写入任何文件。我不得不在我的备份文件夹中执行此操作,因为 Windows 会写入然后删除很多备份文件。
答案2
只需放入共享定义即可:
recycle:exclude = *.*
至少这对于我在 Debian 8.0 x86_64 机器上使用 Samba 4.1.17 是有效的。
我发生什么事了
我为我们工作文件服务器上的所有共享启用了 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 就会创建 RECYCLE 共享的备份,并在其中包含恢复的文件(即回收站本身的回收站)。
我发现的解决方案是从 Samba 回收站功能中排除 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
答案3
我不认为使用 samba 回收站插件仅对 1 个共享实现这一点,您最好使用 cron 中每分钟左右运行一次的脚本来清除回收站共享内的文件夹。
将 rm -rf /home/path/to/my/dir/* 之类的命令添加到 cron 中可以免去您担心 samba 配置的麻烦。
使用 cron 安排作业crontab -e
并添加行
*/10 * * * * /bin/rm -rf /home/path/to/my/dir/*
使其每 10 分钟运行一次并清除里面的所有东西/home/path/to/my/dir/
。
答案4
要禁用特定共享的 vfs 回收,只需将其放入共享中:
vfs objects =
因此,要为所有共享启用 vfs 回收但不为“norecyclebin”,您的配置应如下所示:
[global]
...
vfs objects = recycle
recycle:repository = RECYCLER
recycle:keeptree = Yes
recycle:versions = Yes
...
[share]
...
[anothershare]
...
[norecyclebin]
...
# disable recycle bin for this share
vfs objects =