区分大小写的名称启用时,Samba是否可以正常运行?

我希望Windows客户端可以访问* nix Samba共享。

Samba可以select启用或禁用文件名区分大小写。 通常对于Windows访问,这是禁用的,所以fred == FRED = fReD。

然而,这导致了一个主要的问题,AFAICT:

  • 在Unix上,你创build了两个名为“RODDY”和“roddy”的文件夹
  • 在Windows上,您将看到两个文件夹,但是…
  • 当你删除/重新命名/从Windows打开一个,你可能最终删除/重命名/等任何一个。 你无法知道哪个!

所以,我的问题是,如果区分大小写的标志设置为“ON”,Samba如何在Windows上运行? 用户是否仍然可以看到这两个文件夹,并使文件操作以一致的方式工作?

应该没问题。 Windows资源pipe理器可以正确显示文件名大小写。 我在smb.conf中使用它来确保我在Explorer中input的是Samba使用的内容(我设置了每个共享的所有内容):

case sensitive = True default case = lower preserve case = yes short preserve case = yes 

我经历了一个快速testing(后端的Samba 3.0.24,前端的WinXP)。 文件是通过SSH会话在samba服务器上创build的。

 $ cd /some/samba/share/path $ mkdir test $ cd test $ mkdir test1 TEST1 $ touch test1/foo TEST1/bar 

在此之后,我通过映射的驱动器浏览到testing目录。 我可以看到“test1”和“TEST1”目录。 我打开“test1”,看到“foo”文件。 我打开“TEST1”,看到“酒吧”文件。 到现在为止还挺好。

然后我回到testing目录,并在资源pipe理器窗口中将TEST1重命名为TEST2。 Windows吓了一跳 – 它重命名了文件夹,然后把两个文件夹都显示为TEST2 – 看起来已经重命名了这两个文件夹。 但是在SSHterminal上,我查了一下:

 $ ls test1 TEST2 

所以Windows重命名了这个文件,并且Samba正确地获得了文件名。 当我在资源pipe理器窗口中按F5来刷新文件夹内容时,显示更改为显示正确的文件夹名称。

警告: Linux文件系统允许一些Windows不支持的字符(比如“:”)。 Samba有一个“名称修改”选项可以将这些文件名转换为Windows所喜欢的内容。 例如,如果我在SSH窗口中创build一个名为“FA:23”的文件,Samba会将名称改为“F7T4H0〜F”,这就是浏览器窗口中显示的内容。

为我工作的选项如下:

 preserve case = yes short preserve case = yes