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

标签 javascript node.js symlink

fs.link 之间有什么区别?和 fs.symlink

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

更新

从给出的答案和评论来看,Windows 似乎支持它。

最佳答案

Linux系统有两种链接,硬链接(hard link)和软链接(soft link)。

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

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

我不在 MS Windows 上编写代码,但是 this guide on symbolic links表示有一个用于 Windows 命令外壳的 mklink 命令,可以创建硬 (mklink/H) 或软 (mklink/D ) 关联。 Microsoft Developer's Network -- MSDN -- 有系统函数条目 CreateSymbolicLinkCreateHardLink这可能会提供有关较低级别正在发生的事情的更多信息。

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

关于javascript - fs.link 和 fs.symlink 有什么区别?它们是平台独立的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695726/

相关文章:

javascript - Nodejs node-schedule npm 抛出错误 "this.job.execute is not a function"

javascript - 注册多个事件监听器,即使我正在使用 removeEventListener

javascript - 将带有图像和标题的元标记添加到 Angular 6 项目

python - 通过 pip3 安装的软件包,在 Mac 上不会自动创建符号链接(symbolic link)

grep - 为什么递归 grep 显示 'No such file or directory' 错误?

javascript - 音频元素中的自动播放属性偶尔工作

node.js - 从node.js切换到iisnode时需要更改哪些内容?

node.js - req.logout() 不是一个函数

linux - 从文件树中删除 git-annex 存储库

node.js - Webpack-NodeJS-找不到模块 : Error: Can't resolve 'fs'