啟用區分大小寫的名稱後,Samba 是否可以在 Windows 上正常工作?
我希望 Windows 客戶端可以訪問 *nix Samba 共享。
Samba 具有啟用或禁用文件名區分大小寫的選項。通常對於 Windows 訪問,這是禁用的,因此 fred==FRED=fReD。
然而,這導致了一個主要問題,AFAICT:
- 在 unix 上,您創建兩個文件夾,分別稱為“RODDY”和“roddy”
- 在 Windows 上,您會看到這兩個文件夾,但是…
- 當您從 Windows 刪除/重命名/打開一個時,您最終可能會刪除/重命名/等其中任何一個。 你沒有辦法知道是哪一個!.
所以,我的問題是,如果區分大小寫的標誌設置為“ON”,Samba 在 Windows 上的行為如何?使用者是否仍然可以看到這兩個文件夾,並且文件操作以一致的方式工作?
應該沒問題。Windows 資源管理器在正確顯示文件名大小寫方面做得很好。我在我的 smb.conf 中使用它來確保我在 Explorer 中輸入的內容是 Samba 使用的內容(我設置了所有這些 per-share):
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”文件。到目前為止,一切都很好。
然後我回到 test 目錄,在 Explorer 視窗中,將 TEST1 重命名為 TEST2。Windows 稍微嚇了一跳——它重命名了文件夾,然後將兩個文件夾顯示為 TEST2——似乎已經重命名了這兩個文件夾。但是,在 SSH 終端中,我檢查了:
$ ls test1 TEST2
所以 Windows 重命名了文件,Samba 正確地得到了文件名。當我在資源管理器視窗中按 F5 以刷新文件夾內容時,顯示屏更改為顯示正確的文件夾名稱。
警告: Linux 文件系統允許一些 Windows 不允許的字元(如“:”)。 Samba 有一個“名稱修改”選項,可以將這些文件名轉換為 Windows 喜歡的名稱。例如,如果我在我的 SSH 視窗中創建一個名為“FA:23”的文件,Samba 會將名稱更改為“F7T4H0~F”,這就是資源管理器視窗中顯示的內容。