fs.link和fs.symlink有什么区别?它们是平台独立的吗?

时间:2014-11-02 03:26:30

标签: javascript node.js symlink

fs.linkfs.symlink之间的区别是什么?

我想以编程方式创建指向物理文件(或其他符号链接)的符号链接,我在Linux上,但想知道是否可以编写独立于操作系统的解决方案?有什么限制?

更新

根据给定的答案和评论,Windows 似乎支持它。

1 个答案:

答案 0 :(得分:12)

Linux系统有两种链接,硬链接和软链接。

fs.link()正在通过C系统调用link()创建硬链接。从终端,等效值为ln originalName linkName。硬链接由引用同一文件的新目录条目组成。在列表中,它似乎是一个普通文件,就像原始文件一样。如果删除原始文件,则删除内容,并且硬链接仍然有效。只有删除所有硬链接时才会释放磁盘区域。

fs.symlink()正在通过C系统调用symlink()创建软链接,a.k.a符号链接。从终端,等效值为ln -s originalName linkName,其中-s标记表示软/符号链接。软链接会创建一种指向另一个文件的特殊目录条目。列出它时它是指针的事实很明显,删除原始文件就足以删除内容,并使用链接中断。

我不在MS Windows上编码,但this guide on symbolic links表示Windows命令shell有一个mklink命令可以创建硬(mklink /H)或者soft(mklink /D)链接。 Microsoft Developer's Network - MSDN - 包含系统函数CreateSymbolicLinkCreateHardLink的条目,这些条目可能会提供有关较低级别发生的更多信息。

在Mac上,developer.apple.com's page for ln显示他们在Mac OSX 10.9中拥有ln链接创建终端命令的BSD版本,支持硬链接和软链接。