Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



给Samba添加回收站功能

之前在使用windows服务器做文件共享时,如果客户端在共享文件夹里删除文件,那么将无法在服务器端找到已经删除的文件.如果在客户端有误删文件的情况,那么成功恢复文件的机率将非常小.
后来在网上查阅了一些资料, 原来samba共享是可以添加回收站功能的.删除的文件给直接放到设置好的回收站目录里.
只需要在已经设置好的共享文件字段里加上以下代码:


#recycle:repository = /samba/deleted/public/%U #指定该共享文件夹的回收站目录 %U是按登录的用户名分开存放
recycle:repository = /samba/deleted/public
recycle:keeptree = Yes #指定是否按删除时的目录结构存放
recycle:versions = Yes #指定是否区覆盖同名的文件,yes是不覆盖
recycle:maxsixe = 0 #指定回收站目录的大小,0是不限制
recycle:exclude = *.tmp|*.mp3 #不放入回收站的文件类型
recycle:noversions = *.doc #指定覆盖同名文件的文件类型
完整设置如下:

[公用文件夹]
comment = 公用文件夹
path = /samba/public#共享文件夹路径
read only = no#共享文件夹是否是只读

valid users = @kfb,root #用@指定可访问的用户组,不同组和用户之前用","分开

#指定用户建立文件或目录时的默认权限

create mask = 0660

directory mode = 2770
force create mode = 0660
force directory mode = 2770

#禁止上传的文件
veto files = /*.mp3/*.mp4/*.rmvb/*.wma/*.exe/*.bat/*.dll/*.avi/*.rar

#回收站设置
vfs object = recycle
recycle:repository = /samba/deleted/public
recycle:keeptree = Yes
recycle:versions = Yes
recycle:maxsixe = 0
recycle:exclude = *.tmp,*.temp,*.obj,~$*,*.$$$
recycle:noversions = *.doc


注意事项:
1.回收站文件夹的用户和用户组设置, 权限设置要和共享文件夹的设置是一样的, 如果不一致被删除的文件是无法保存到回收站文件夹
2.如果maxsize设置为0, 那么回收站的文件需要管理员手工去删除. 当然, 可以将删除文件的任务交给计划任务去完成,如:

vim /etc/crontab

30 8 * * * root find /samba/deleted/ -mtime +30 -exec rm -rf {} \;
上面的设置就是每天8:30 删除回收站内大于30天的文件
3.每个共享文件夹要单独设置一个回收站文件, 避免同名文件覆盖,同时也方便管理和查找.

浏览29  评论0  Alex于 2018-2-5 10:08
发言