2011-01-24 160 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

相关问题