Samba可以选择启用或禁用文件名区分大小写.通常对于Windows访问,这是禁用的,因此fred == FRED = fReD.
然而,这导致了一个主要问题,AFAICT:
>在unix上,您创建两个文件夹
被称为“RODDY”和“roddy”
>在Windows上,你会看到两个
文件夹,但……
>从Windows中删除/重命名/打开一个时,
你可能会结束
删除/重命名/等等.
你无从知道哪个!
所以,我的问题是,如果区分大小写的标志设置为“ON”,Samba如何在Windows上运行?用户是否仍然可以看到这两个文件夹,并且文件操作是否以一致的方式工作?
解决方法
case sensitive = True default case = lower preserve case = yes short preserve case = yes
我经历了一个快速测试(后端是Samba 3.0.24,前端是WinXP).文件是通过SSH会话在samba服务器上创建的.
$cd /some/samba/share/path $mkdir test $cd test $mkdir test1 TEST1 $touch test1/foo TEST1/bar
在此之后,我浏览了映射驱动器到测试目录.我可以看到“test1”和“TEST1”目录.我打开“test1”并看到“foo”文件.我打开“TEST1”并看到“bar”文件.到现在为止还挺好.
然后我回到测试目录,在Explorer窗口中,将TEST1重命名为TEST2. Windows略有吓坏 – 它重命名了该文件夹,然后将两个文件夹显示为TEST2 – 似乎已重命名这两个文件夹.但是,在SSH终端中,我检查了:
$ls test1 TEST2
因此,Windows重命名了该文件,Samba正确获取了文件名.当我在资源管理器窗口中按F5刷新文件夹内容时,显示更改为显示正确的文件夹名称.
警告:Linux文件系统允许Windows没有的一些字符(如“:”). Samba has a “name mangling” option将这些文件名转换为Windows会喜欢的内容.例如,如果我在SSH窗口中创建一个名为“FA:23”的文件,Samba将名称变为“F7T4H0~F”,这就是Explorer窗口中显示的内容.