2011-01-24 37 views
5

在Mac上,我有一個共享文件夾〜\ Documents。有兩個子文件夾Data和Data_2011,前者包含最近幾年文件的文件夾,後者包含指向自2011年1月1日以來已更新的Data文件夾中文件夾的符號鏈接。鏈接是使用標準ln -s命令。當共享到Windows或Linux(smb)時符號鏈接工作,但在共享到Mac時損壞(afp或smb)

當我在Windows計算機上安裝共享的Documents文件夾時,鏈接工作。當我使用smb在Linux上掛載時,鏈接工作。當我直接在託管Mac上使用這些鏈接時,它們可以工作。但是,當我從遠程Mac安裝「文檔」文件夾時,軟鏈接被破壞。要清楚,我通過轉到Finder>連接到服務器來安裝Documents文件夾> afp://xxx.xxx.xx.xx/或smb://xxx.xxx.xx.xx/Documents

任何想法如何讓這些軟鏈接在共享到遠程Mac時運行?

-Sibo

回答

4

Mac OS文件共享將符號鏈接暴露爲實際的符號鏈接。

如果我使用AFP或SMB連接一臺Mac到另一臺Mac,我可以證實這一點。

請注意,符號鏈接由客戶端解析 - 即使在非文件共享的情況下,這意味着符號鏈接中的相對路徑可能會非常棘手,在這種情況下涉及網絡文件共享,這意味着客戶端計算機需要能夠看到目標文件(目標文件也必須位於共享和裝入的文件夾中),路徑必須相同。例如,如果我在我的主目錄中創建一個名爲「foo」的文本文件,那麼執行「ln -s foo symlink」創建一個名爲symlink的鏈接,然後從第二臺計算機掛載該主目錄,然後做「ls -l」它顯示爲「symlink @ - > foo」,如果我抓住這個文件,我可以讀取它。但是如果我創建符號鏈接爲「ln -s/Users/matt/foo符號鏈接」,那麼在第二臺計算機上ls -l將其顯示爲「symlink @ - >/Users/matt/foo」,並且cat說「cat:符號鏈接:沒有這樣的文件或目錄「。這是因爲在第二臺計算機上,/ Users/matt是本地主目錄,其中不包含名爲foo的文件(如果是,解析該符號鏈接的任何內容都將看到本地foo,而不是從第一臺計算機共享的foo) 。

所以基本上:你可以使用「ls -l」來查看符號鏈接指向的地方,並且注意客戶端計算機將解析符號鏈接並嘗試打開任何具有該名稱的文件,這可能是也可能不是你的預期。

(可能是你的測試在你的Linux機器上運行,而不是你的Mac機的原因是Linux機器有更多的網絡共享或者名稱不同,這樣symlink target name是Linux機器上的有效文件名,但是不是Mac)。

+0

我理解並同意你爲什麼我的符號鏈接目前失敗。因此,一種可能的解決方案可能是重構我的文件夾結構,以便Data_2011是包含符號鏈接和數據子文件夾的文件夾。然而,這並不理想。有沒有辦法讓這些鏈接在沒有合併目錄的情況下工作?我試過使用相對鏈接,如「ln -s ../Data/datafolder符號鏈接」,但我沒有得到不同的結果。 – 2011-01-24 08:57:12

相關問題