Windows是否识别Linux的符号链接?


14

我只是想知道Windows系统如何处理符号链接。我最好的猜测是它不会识别它们,但是我不确定。

另外,面对Mac,Mac会做什么?


1
您打算如何将Windows公开给符号链接?它不理解支持它们的文件系统(NTFS除外,NTFS的符号链接并不完全不同于通常隐藏在UI中的符号链接)。
吉尔(Gilles)'所以

哦..那么,如果您已挂载Windows分区,并尝试在其中添加符号链接,会发生什么?它像文件夹一样工作吗?(如果是这样,我想知道RECURSION会发生什么...)
JamesTheAwesomeDude

你可以请帮我在这:stackoverflow.com/questions/21403772/...
高飞

Answers:


10

在谈论非本地磁盘时,取决于Windows版本和服务器端的配置。

从Windows Vista开始,Windows确实有了符号链接的概念,但是语义有所不同。但是这里更重要的问题应该是路径名,它遵循不同的语法。对于初学者:单根目录树在unixoid端,几个驱动器号作为根在Windows端。

在unixoid方面,符号链接只是带有特殊标志的文本文件。在Windows方面,基本机制称为重新解析点。这告诉对象管理器将其传递给特定的已注册过滤器(其元数据存储重新解析点中)。Windows 2000已经引入了一种称为重合点的重解析点(大约但不是完全的目录符号链接)。借助Vista,他们在文件和目录(以及远程驱动器)上都引入了符号链接。并且某种程度上也支持远程驱动器上的符号链接。

要点是文件系统驱动程序(在本地运行时)是否会对Windows看到的路径进行任何调整。在这种情况下,它将对某些本地/相对符号链接起作用。对于绝对路径作为目标,将很难且不可能推断出含义。对于远程符号链接(指向“网络共享”)也是如此。

至于Mac方面,我一无所知,作为一个单独的问题可能有意义。但是只要服务器端传达这是一个符号链接的信息,我就看不到任何问题,因为它们都遵循SUS语义(与Windows不同)。


考虑Linux的侧面安装点:

/dev/sda1 /
/dev/sda2 /home
/dev/sda3 /var

现在考虑/home/paul/fstab指向的符号链接/etc/fstab。它们位于两个不同的卷上,Windows –如果能够通过文件系统驱动程序查看它们(确实起作用!),则无法区分它们的/etc/fstab描述方式。因此\paul\fstab,即使文件夹已翻译,Windows也会在Windows下看到的链接指向,该链接在\etc\fstab上不存在/dev/sda2。而且,如果该符号链接指向相对路径,则../../etc/fstab一切都不会改变。


要点:因此,尽管可以想到可以在某些极端情况下使用该方法,但是在篱笆的两侧语义和语法不同的事实使您不太可能找到可行的通用方法。


2
哇,这是非常详细,详尽的答案!感谢您提供所有这些信息!我实际上不知道Linux的符号链接是基于文本的。再次感谢您在此处提供的所有有用信息。
JamesTheAwesomeDude

你可以请帮我在这:stackoverflow.com/questions/21403772/...
高飞

我想我已经在XP上完成了符号链接,您确定Vista是第一个吗?
ctrl-alt-delor 2015年

ntfs支持挂载点(如果您不喜欢所有这些字母)。
ctrl-alt-delor 2015年

@richard:实际上,卷安装点 Win32子系统中驱动器号的技术术语。但是,从某种意义上说,您还可以在现有文件夹上设置卷安装点(这与结点非常相似)是正确的。用于实现体积安装点,连接点和符号链接的技术功能称为重解析点。是的,Vista是第一个具有符号链接支持的网站。在XP上,您只能在另一个子系统(例如POSIX)中完成此操作,但是该子系统具有如上所述的不同语义。
0xC0000022L

2

对于Windows方面,0xC0000022L的答案是彻底的。Mac可以识别Linux的符号链接。但是Linux无法识别在Mac的Finder中创建的别名(使用ln -s创建的符号链接可以正常工作)。


听起来像别名是Windows(.lnk文件)上OSX的快捷方式。
0xC0000022L16年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.