当文件包含冒号时,Samba 无法正确显示文件。
原始文件名:test:file.txt
Windows下的显示名称:T8S6CH~R.TXT
我该如何修复它?
信息:
Linux:SLES 11 SP 3
桑巴:Version 3.6.3-0.33.39.1-3128-SUSE-CODE11-x86_64
答案1
Samba 选项的问题mangled names
在于这两种设置都不理想。您可以拥有未损坏但无法以任何方式访问的名称,因为它们包含非法字符,或者名称被损坏为 DOS 8.3 格式,因此几乎无法读取。
幸运的是(现在)有一个VFS 模块调用catia
它将提供自定义字符映射。特别是可以找出 Windows 文件名中被视为非法的字符。
在该[global]
部分中放置以下行:
# Mapping illegal characters, where enabled with "vfs objects = catia"
mangled names = no
catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6
在每个[share_name]
部分添加下一行(如果已经有一行vfs objects
,只需附加catia
到列表中):
vfs objects = catia
与往常一样,如果要应用于所有共享,则可以放置此基于共享的设置,[global]
而不是每个单独的共享定义。
在我的基于 Debian 的系统上,这个 VFS 对象模块是作为标准包的一部分安装的。
此设置映射的文件名的一个示例是2017-12-24 12:23.txt
.使用mangled names = yes
此文件显示为2BB0Y9~4.TXT
.相反,使用vfs objects = catia
该文件名会显示为2017-12-24 12÷23.txt
.它并不完美,但已经相当不错了。最重要的是,我可以从 Windows 应用程序访问它。
答案2
由于某种原因,Samba 开始破坏包含冒号的文件名。到目前为止,我在互联网上找不到任何有关此行为的信息。
解决方案非常简单。添加mangled names = no
该[global]
部分/etc/samba/smb.conf
并重新启动 Samba 修复了该问题。
答案3
特殊字符问号? \ < > * 等在 Windows 文件名中是非法的,我总是避免使用它们。
尽管如此,我还是有没问题与这些字符使用我的苹果系统Catalina 正在访问我的 FreeNAS-11.3-U1 和 SMB/Samba 设置。我不确定为什么此设置不是默认设置,但您必须按照以下步骤才能使其在 MacOS 上完美运行。
在 FreeNAS webUI 中,转到共享>SMB>编辑
- 选择“高级模式”并勾选两者卡蒂亚和水果在“VFS对象”中
- 设置辅助参数为
fruit:encoding = native
然后转到服务并重新启动 SMB
答案4
对于希望挂载 Linux 上托管的 Samba 卷且字符和文件名不混乱的 Mac 用户:
我的一个片段/etc/samba/smb.conf
:
[sharename]
path = /path/to/share
browsable = yes
writable = yes
valid users = nick
create mask = 644
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:encoding = native
我必须在上面的配置中添加最后 3 行