启用区分大小写的名称时,Samba是否可以在Windows上很好地工作?


12

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

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

但是,这导致了一个主要难题,即AFAICT:

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

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

Answers:


12

应该没事的 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”,这就是资源管理器窗口中显示的内容。


请注意,在Windows 95客户端case sensitive中,启用该选项后,您将无法访问共享中的目录。auto在这种情况下,您应该使用该选项。
devius

假设您的UNIX文件系统上有两个文件夹:Test1和test1用户在Windows中将看到哪个文件夹?我可以在Samba中确保如果存在一个文件夹Test1,并且unix上的某人试图创建一个文件夹test1,它会自动将其合并到Test1,以便Windows用户将始终能够看到所有文件吗?以我的经验,如果Test1和Test1存在,Windows用户将看不到两个文件夹,但只能看到其中一个。
Erik

@Erik通常都会出现。Windows了解所有级别的大小写敏感性,并已深入实现其文件系统。没尝试。
Tiberiu-Ionuț Stan,

1

适用于我的选项如下:

preserve case           = yes
short preserve case     = yes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.