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

Rod*_*ddy 13 windows samba server-message-block

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

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

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

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

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

qua*_*ote 13

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

case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes
Run Code Online (Sandbox Code Playgroud)

我进行了一个快速测试(后端为 Samba 3.0.24,前端为 WinXP)。文件是通过 SSH 会话在 samba 服务器上创建的。

$ cd /some/samba/share/path
$ mkdir test
$ cd test

$ mkdir test1 TEST1
$ touch test1/foo TEST1/bar
Run Code Online (Sandbox Code Playgroud)

在此之后,我浏览了我映射的驱动器到测试目录。我可以看到“test1”和“TEST1”目录。我打开“test1”并看到“foo”文件。我打开“TEST1”并看到“bar”文件。到现在为止还挺好。

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

$ ls
test1 TEST2
Run Code Online (Sandbox Code Playgroud)

因此 Windows 重命名了该文件,Samba 正确获取了文件名。当我在资源管理器窗口中按 F5 刷新文件夹内容时,显示更改为显示正确的文件夹名称。

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