当启用区分大小写的名称时,Samba 是否可以与 Windows 很好地配合使用?

当启用区分大小写的名称时,Samba 是否可以与 Windows 很好地配合使用?

我想要一个可供 Windows 客户端访问的 *nix Samba 共享。

Samba 有一个选项可以启用或禁用文件名区分大小写。通常对于 Windows 访问,此功能是禁用的,因此 fred==FRED=fReD。

然而,据我所知,这会导致一个主要的问题:

  • 在 unix 上,创建两个名为“RODDY”和“roddy”的文件夹
  • 在 Windows 上,您将看到这两个文件夹,但是...
  • 当您从 Windows 中删除/重命名/打开其中一个时,您最终可能会删除/重命名/等等其中任何一个。 您根本无法知道是哪一个!

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

答案1

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

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”文件。到目前为止一切顺利。

然后我回到测试目录,在资源管理器窗口中将 TEST1 重命名为 TEST2。Windows 有点奇怪 - 它重命名了文件夹,然后将两个文件夹都显示为 TEST2 - 似乎已重命名两个文件夹。但是,在 SSH 终端中,我检查了:

$ ls
test1 TEST2

因此 Windows 重命名了该文件,Samba 也正确获得了文件名。当我在资源管理器窗口中按 F5 刷新文件夹内容时,显示内容发生了变化,显示了正确的文件夹名称。

警告:Linux 文件系统允许使用某些 Windows 不允许的字符(例如“:”)。 Samba 有一个“名称混淆”选项将这些文件名转换为 Windows 会喜欢的格式。例如,如果我在 SSH 窗口中创建一个名为“FA:23”的文件,Samba 会将该名称改写为“F7T4H0~F”,而这就是 Explorer 窗口中显示的内容。

答案2

对我有用的选项如下:

preserve case           = yes
short preserve case     = yes

相关内容