我们的大多数计算机都运行 Ubuntu,但其中两台双启动进入 Windows,当我们有客人过来时,它们通常也运行 Windows 计算机。因此,除了使用 NFS,我们的文件服务器(Ubuntu 服务器)也运行 Samba。
由于我们主要使用 Ubuntu,因此我们喜欢利用它优于 Windows 的优势,例如能够使用\:*?"<>|文件名中的字符。当然,问题在于 Windows 不接受文件名中的这些字符,因此 Samba 必须将文件名转换为更可接受的内容。然而,我发现它这样做的方式令人讨厌。
例如文件名Episode 182 - Exorcist 2: The Heretic.mp4变成E4Q82R~Y.MP4. 这是一个可怕的“修正”。有没有办法让 Samba 的变形对人类更友好一点?是否可以将其“更正”为类似的东西Episode 182 - Exorcist 2_ The Heretic.mp4,即简单地替换非法字符?
小智 14
mangled map 现已弃用,将不再适用于新版本的 Samba。
您可以使用vfs_catia来解决问题。将以下行添加到 smb.conf:
vfs objects = catia
catia:mappings = 0x003a:0x2236,0x003f:0x0294,0x002a:0x2217,0x003c:0x276e,0x003e:0x276f,0x0022:0x02ba,0x007c:0x2223,0x005c:0x29f9
Run Code Online (Sandbox Code Playgroud)
映射是用 0x 前缀的十六进制字符代码指定的,以冒号分隔。提供的映射将非法字符重新映射到不太可能在任何语言中使用的 unicode 相似字符。
:?* < > " | \
? ? ? ? ? ? ?
代码可以放在[global]单独的[share]部分下或放在单独的部分中。放置它[global]可能会影响性能。
请注意,您映射到的任何字符都不能在服务器上的文件名中使用,否则它们将无法访问。
示例:windows 客户端访问file?name.txt服务器上命名的文件时,会file<name.txt由于映射而向服务器请求,这将导致找不到文件错误。
在此链接中,您可以看到修改选项。我认为首先你应该禁用该选项:
mangled names
Run Code Online (Sandbox Code Playgroud)
之后我想名字应该看起来更好......
要替换冒号,例如使用以下行:
mangled map =(: _)
Run Code Online (Sandbox Code Playgroud)
您可以添加更多替换规则,如下所示:
mangled map =(: _) (foo bar)
Run Code Online (Sandbox Code Playgroud)
(也用 bar 替换任何出现的 foo)
| 归档时间: |
|
| 查看次数: |
8316 次 |
| 最近记录: |