人性化的 Samba 名称修改

Ale*_*lex 13 samba

我们的大多数计算机都运行 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由于映射而向服务器请求,这将导致找不到文件错误。

  • 这很好用!需要注意的一件事是,您不能将所有内容都映射到同一个字符,并且在您的示例中,任何实际包含下划线的内容都将不再可访问。相反,我使用了以下映射:`0x3a:0x7e 0x3f:0x5e`,所以`:` 变成了`~`,而`?` 变成了`^`。 (2认同)

Mic*_*l K 2

此链接中,您可以看到修改选项。我认为首先你应该禁用该选项:

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)