符号链接在共享到Windows或Linux(smb)时工作,但在与Mac共享时断开(afp或smb)

时间:2011-01-24 01:24:03

标签: macos symlink smb afp

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

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

有关如何在与远程Mac共享时使这些软链接正常工作的任何想法吗?

-Sibo

1 个答案:

答案 0 :(得分: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” :symlink:没有这样的文件或目录“。那是因为在第二台计算机上,/ Users / matt是一个本地主目录,不包含名为foo的文件(如果有的话,任何解析符号链接的东西都会看到本地foo,而不是第一台计算机共享的foo)

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

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