fs.link和fs.symlink之间的区别是什么?
我想以编程方式创建指向物理文件(或其他符号链接)的符号链接,我在Linux上,但想知道是否可以编写独立于操作系统的解决方案?有什么限制?
根据给定的答案和评论,Windows 似乎支持它。
答案 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 - 包含系统函数CreateSymbolicLink和CreateHardLink的条目,这些条目可能会提供有关较低级别发生的更多信息。
在Mac上,developer.apple.com's page for ln显示他们在Mac OSX 10.9中拥有ln
链接创建终端命令的BSD版本,支持硬链接和软链接。