jle*_*715 6 samba files directory 20.04
Ubuntu 20.04.1,Samba 包 2:4.11.6+dfsg-0ubuntu1.2
最近在我的 Ubuntu 机器上设置了一个 Samba 共享;没什么特别的,只是一个名为“媒体”的共享,带有三个子目录 - 电影、电视和照片。
一个多星期没问题,但截至昨天,Photos 目录下的所有文件都表示为目录。从 MacOS (smb://myserver/media) 访问 Samba 共享时,所有文件都显示有“文件夹”图标,当您cd通过终端进入文件夹时,所有文件在运行时都列为d rwx ls -al。文件处于此状态时无法正常使用。即使我将该文件复制到 MacOS 机器,它仍然是一个目录。访问 Ubuntu 机器本身(即本地)上的文件显示文件完好无损,一切正常。
我试图解决问题的事情:
min protocol = SMB2和添加client min protocol = SMB2到 /etc/samba/smb.conf很奇怪,因为共享上其他目录中的文件表现正常,而照片目录中的文件表现正常一个多星期才突然发生。
有趣的是,这与旧 bug 的行为类似,但我使用的是解决此问题的 Samba 版本。
任何帮助将非常感激; 由于我没有进行任何导致此行为的更改,因此我不确定擦除并重新加载会(永久)修复它。我希望将这个盒子用作 NAS,但无法访问文件是一个主要的障碍。
*** 编辑:Windows 上的类似行为
小智 8
我遇到了同样的问题,对我有用的解决方案是:
所有受影响的文件/文件夹都具有扩展属性user.DOSATTRIB。执行getfattr #filename“坏”文件的结果时将是这样的:
getfattr Borat\ \(2006\).mp4
# file: Borat (2006).mp4
user.DOSATTRIB
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我使用命令删除了扩展属性setfattr -x user.DOSATTRIB #filename。所以对于上面的例子做:
setfattr -x user.DOSATTRIB Borat\ \(2006\).mp4
getfattr Borat\ \(2006\).mp4
Run Code Online (Sandbox Code Playgroud)
未返回任何扩展属性,并且可以再次访问我的网络共享文件。
我目前正在弄清楚如何setfattr -x user.DOSATTRIB在我的文件夹上递归运行。当我想通之后,我会编辑这个回复。
更新:好的,所以我做了一种草率的解决方案。
getfattr -R Movies > DOS-Movies.txt在我的电影文件夹上方的目录中使用了该命令。上面的命令getfattr在电影文件夹上递归运行并返回所有具有扩展属性的文件和文件夹,然后将它们保存在一个文本文件中。(?-is)^.+\Ruser.encryptable\R删除了包含该属性和上一行(文件名)的行。我还删除了所有空行,所以我最终得到了# file: Movies/Dune (1984)/Dune (1984).mp4= 只是具有 DOSATTRIB 扩展属性的文件,每行一项。我还使用查找/替换来查找\r\n和替换以"\r\n在每行末尾添加一个 " 字符。setfattr -x user.DOSATTRIB,所以我做了一个基本的查找/替换,最后每一行看起来像这样:setfattr -x user.DOSATTRIB "Movies/Dune (1984)/Dune (1984).mp4"希望这可以帮助!
小智 6
作为删除属性的替代方法,该属性确实适用于当前共享的文件,但不一定适用于将来添加的新文件,您还可以禁用该选项,该选项自 samba 4.9.0 起默认启用,并导致此问题问题。(至少这是我的经验)
使用您喜欢的文件编辑器编辑 /etc/samba/smb.conf 并禁用存储 dos 属性的选项。
[global]
...
# Make sure files are not shown as folders!
store dos attributes = no
Run Code Online (Sandbox Code Playgroud)
之后通过 重新启动 SMB sudo systemctl restart smbd。
显然它被启用“[...]以在默认安装中提供更好的Windows文件服务器兼容性。”
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |