5

在 Mac 上,我有一个共享文件夹 ~\Documents。有两个子文件夹,Data 和 Data_2011,前者包含过去几年的文件文件夹,后者包含指向 Data 文件夹中自 2011 年 1 月 1 日以来更新的文件夹的符号链接。链接是使用标准创建的ln -s命令。

当我在 Windows 计算机上安装共享文档文件夹时,链接有效。当我使用 smb 在 Linux 上挂载时,链接有效。当我直接在托管 Mac 上使用这些链接时,它们可以工作。但是,当我从远程 Mac 挂载 Documents 文件夹时,软链接会断开。为了清楚起见,我通过转到 Finder > 连接到服务器 > afp://xxx.xxx.xx.xx/ 或 smb://xxx.xxx.xx.xx/Documents 来安装 Documents 文件夹

关于如何让这些软链接在共享到远程 Mac 时工作的任何想法?

-思博

4

1 回答 1

4

Mac OS 文件共享将符号链接公开为实际的符号链接。

如果我使用 AFP 或 SMB 将一台 Mac 连接到另一台,我可以确认这一点。

请注意,符号链接是由客户端解析的——即使在非文件共享的情况下,这意味着符号链接中的相对路径可能很棘手,在这种涉及网络文件共享的情况下,这意味着客户端计算机需要能够查看目标文件(目标文件也必须在共享和挂载的文件夹中),并且路径需要相同。

例如,如果我在我的主目录中创建一个名为“foo”的文本文件,然后执行“ln -s foo symlink”以创建一个名为 symlink 的链接,然后从第二台计算机挂载该主目录并执行“ls - l" 它显示为 "symlink@ -> foo",如果我 cat 文件,我可以读取它。但是如果我将符号链接创建为“ln -s /Users/matt/foo symlink”,那么在第二台计算机上 ls -l 将其显示为“symlink@ -> /Users/matt/foo”,并且 cat 说“cat:符号链接:没有这样的文件或目录”。这是因为在第二台计算机上,/Users/matt 是一个本地主目录,它不包含名为 foo 的文件(如果包含,任何解析符号链接的东西都会看到本地 foo,而不是从第一台计算机共享的 foo) .

所以基本上:您可以使用“ls -l”查看符号链接指向的位置,并注意客户端计算机将解析符号链接并尝试打开具有该名称的任何文件,这可能是也可能不是您所期望的。

(您的测试在 Linux 机器上而不是 Mac 上运行的原因可能是 Linux 机器安装了更多网络共享或具有不同的名称,因此符号链接目标名称是 Linux 机器上的有效文件名,而不是 Mac。 )

于 2011-01-24T08:23:47.143 回答