Samba误删除文件恢复(开启回收站)

简介:

在Windows中用户删除文件,默认情况下文件会被放到回收站中以防止用户误删除文件(除开shift+delete这种删除操作),前几天刚刚搭建samba服务器,查阅了资料,了解到了 samba其实也有这个功能,当用户访问通过Samba服务配置的共享目录时,可以将用户删除的文件放到回收站中防止误操作。
为Samba服务配置回收站时,需要针对每个共享资源进行配置

1、配置文件

cd /etc/samba
vi smb.conf

#=Global Setting=
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
#===Share Definitions
[test1]
path = /data
browsable = yes
writable = yes
guest ok = no
read only = no
create mask = 0777
directory mask = 0777

#以下参数用于配置回收站。
vfs object = recycle
recycle:repository = .deleted/%U
recycle:versions = Yes
recycle:keeptree = Yes
recycle:maxsixe = 0
recycle:exclude = .tmp|.mp3
recycle:noversions = *.doc

找到你的samba私人配置的地方
在Samba配置回收站功能中各参数作用如下。
(1) vfs object = recycle:载入Samba用于回收站功能的模块recycle.so。
(2) recycle:repository = . deleted/%U:回收站的相对路径,这个选项指定删除的文件将被储存在什么目录,
即回收站的路径,该路径与共享资源的实际路径有关。在上面的例子中,共享“test”的实际路径是“/test”,
因此任何被删除的内容都被移动到这个目录下的. deleted目录下,%U变量表示当前浏览共享用户的用户名,
因此每个用户删除的文件都会存放在以他用户名命名的目录下。
比如当用户“samba”访问该共享删除的文件将被保存到“/test/.deleted/samba”目录中。此参数只能使用相对路径。
所配置的目录其他用户必须有写权限。当有文件需在放入此目录时,如果出现问题Samba服务器会将相关情况写入日志,并继续对文件的删除操作。
(3) recycle:keeptree = Yes:在将文件移入回收站时,要建立相对应的目录结构。
(4) recycle:versions = Yes:如果在回收站所在目录中存在同名文件,则以“Copy #x of”文件名的形式加以区分。
(5) recycle:maxsixe = 0:回收站的最大使用空间,单位为字节。“0”表示没有最大使用空间的限制。
(6) recycle:exclude = .tmp|.mp3:不放入回收站的文件类型。
(7) recycle:noversions = *.doc:如果在回收站所在目录中存在同名文件,覆盖原有文件的文件类型。

配置完了重启smb客户端

[[email protected] ~]# systemctl restart smb

测试结果

重启之后去删除一个文件

Samba误删除文件恢复(开启回收站)
删除一个文件之后,你的目录下面会多出来一个隐藏的文件夹为.deleted(共享的时候是看不见的)

有些人会出现什么都配置文件都改了,但是没有这个文件夹,你可以返回你的
path = /data 这个/data的上一级目录,看看这个文件夹,你所使用的用户对它有权限