当通过Samba提供包含特殊字符(如“()?:”)的文件时,这些名称会变成无法识别的格式。 例如,一个文件
my_file:_(important).txt
显示为
M43J1E~0.TXT
有没有办法避免这种行为(显然没有重命名文件)? 我假设字符编码不是怪,因为几个UTF-8字符似乎工作正常。
Windows不允许Unix允许的文件名中的某些字符。 桑巴“mangles”的文件名,使他们符合Windows的限制。 您可以检查文件/etc/smb.conf或/etc/samba/smb.conf来查看是否有适当的设置。 要显示这些设置以及默认值,请使用以下命令:
testparm -vs | less
为了缩小这一点:
testparm -vs|grep "case\|mangl"
请参阅此页面了解更多信息。 此外,看到这个页面大约一半(与前一个链接相同的信息)。
我拥有一台运行Samba 3的64位OS X 10.11“El Capitan”的Apple Macbook Pro笔记本电脑,我通过Macports安装。
我还拥有一台运行Samba 3的64位GNU / Linux XUbuntu 16.04“Xenial Xerus”的Dell Inspiron笔记本电脑,我通过APT安装。
两台机器都有networking共享文件夹,并使用Samba为了在我的WLAN(无线局域网)上进行通信。
我的系统都是巴西葡萄牙语。 因此,我使用特殊字符如ç , á , ã , ô , é ,等等。
当我使用我的Linux笔记本电脑访问我的OS X Samba共享时,所有的string都显示正确:单词maçã , ônus和bênção显示正确。 文件和长名称的文件夹也显示出来,他们的名字显示正确。 因此,在OS X上运行的Samba服务器已经正确configuration…
…但事情并非如此:如果我使用OS X上的Finder应用程序来访问我的Linux Samba共享,那么至less有一个特殊字符的文件和文件夹不会显示我),文件和文件夹的长名称被转换为奇怪的短名称。 因此,我的Linux机器上运行的Samba服务器出了问题。
=>在我的情况下,解决这个问题的方法是在我的Linux机器上的smb.conf文件中的[global]部分中添加以下行:
mangled names = no dos charset = CP850 unix charset = UTF-8
之后,我打开了一个shellterminal窗口,并使用以下命令重新启动了Linux Samba服务器:
sudo service smbd restart
…可以被其他命令replace(如果上面的命令在你的Linux发行版上不起作用):
sudo systemctl restart smbd.service
在重新启动Linux Samba服务器后,OS X上的Finder应用程序终于正确显示了之前隐藏的所有文件和文件夹,因为它们的名称中包含一个或多个特殊字符。 受损(“缩短”)的名字也是“未encryption”的。
脚注 :
smb.conf文件的标准位置是/etc/samba/smb.conf smb.conf文件存储在标准位置/etc/samba/ :有几种不同的方法可以编辑smb.conf文件。 例如,如果你不使用桌面环境(例如,你的系统只有一个shellterminal,没有窗口),你可以安装纳米文本编辑器,通过发出一个命令,如sudo apt-get install nano -y或sudo dnf -b -y install nano或其他东西(取决于你使用的是哪个Linux发行版),然后运行sudo nano /etc/samba/smb.conf 。 如果你使用的是桌面环境,你可以安装一个graphics化的文本编辑器,如GNOME编辑 ,通过发出一个命令,如sudo apt-get install gedit -y或sudo dnf -b -y install gedit或其他东西在哪个Linux发行版上使用),然后运行sudo gedit /etc/samba/smb.conf 。 display charset参数已被弃用。 dos charset参数不支持UTF-8参数。 因此,它必须使用默认参数CP850 。 mangled names = no指示Samba服务器不缩短文件和文件夹的长名称。 因此,由于Samba客户端只是向用户复制Samba服务器提供给客户端的内容,一旦服务器configuration正确,客户端将不再向用户显示任何缩写名称。 从桑巴文档你可以使用这些:
dos charset = ISO8859-1 unix charset = ISO8859-1 display charset = ISO8859-1
我在OS-X和Windows上使用共享文件夹。 某些文件具有相同的问题,因为它们属于以下内容:它们使用文件名中的字符,而不受Windows支持。
请参阅: http : //support.microsoft.com/kb/177506
它列出了文件或目录中Windows不支持的字符。 我想,Samba在列出文件和目录时使用相同的字符列表。
A filename cannot contain any of the following characters: \ / : * ? " < > |
再往下,他们写道:
对命名文件,文件夹或快捷方式有效的字符包括字母(AZ)和数字(0-9)的任意组合,以及以下特殊字符:
^ Accent circumflex (caret) & Ampersand ' Apostrophe (single quotation mark) @ At sign { Brace left } Brace right [ Bracket opening ] Bracket closing , Comma $ Dollar sign = Equal sign ! Exclamation point - Hyphen # Number sign ( Parenthesis opening ) Parenthesis closing % Percent . Period + Plus ~ Tilde _ Underscore
但是,我个人把不允许的字符列表作为向客户介绍的参考);