javascript - 检测 Node.js 中的硬链接(hard link)

标签 javascript node.js filesystems hardlink

如何判断文件系统路径是否是 Node.js 的硬链接(hard link)?函数 fs.lstat 给出了一个 stats 对象,当给定硬链接(hard link)时,该对象将为 stats.isDirectory() 返回 true stats.isFile() 分别。 fs.lstat 没有提供任何东西来说明普通 filedirectory 与链接文件之间的区别。

如果我对链接 (ln) 工作原理的理解是正确的,那么链接文件指向磁盘上与原始文件相同的位置。这意味着原始文件和链接版本是相同的,并且无法区分原始文件和链接文件。

我正在寻找的功能如下:

This is hypothetical pseudo-code for demonstration & communication purposes.

fs.writeFileSync('./file.txt', 'hello world')
fs.linkSync('./file.txt', './link.txt')
fs.isLinkSync('./file.txt') // => false
fs.isLinkSync('./link.txt') // => true
fs.linkChildrenSync('./file.txt') // => ['./link.txt']
fs.linkChildrenSync('./link.txt') // => []
fs.linkParentSync('./link.txt') // => './file.txt'
fs.linkParentSync('./file.txt') // => null

最佳答案

好吧..只是为了好玩... 您可以选择通过特定目录中的 inode 查找文件。

一旦您从统计对象中获取 inode ID..

fs.stat('./okay.file', function(err, stats){
  var inodeID = stats.ino; // Double check that this is correct
});

然后您可以遍历文件夹中的所有文件并使用条件检查 inode ID 是否匹配。 Get all files in a directory .如果没有,您可以假设没有链接(在当前目录中)。

但是,我们似乎无法通过 inode id 来搜索文件。参见:nodejs open nfs files by inode (or a the fastest way to reopen a file)

fs.lstat:https://nodejs.org/api/fs.html#fs_fs_lstat_path_callback

统计对象:https://nodejs.org/api/fs.html#fs_class_fs_stats

关于javascript - 检测 Node.js 中的硬链接(hard link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31823283/

相关文章:

javascript - 从外部 Controller 设置 Angular 复选框重复

python - node-pre-gyp install--fallback-to-build--library=static_library

windows - NTFS 文件系统时间

c# - 使用 C# 从 sharepoint 站点下载 excel 文件到本地系统

javascript - 如何在当前现有的 javascript 对象中添加嵌套对象

validation - 如何在 Xtext 验证器中访问本地文件系统?

javascript - Jquery 两个 api 调用来检索两个嵌套 $.each 循环内的不同动态元素

javascript - Bokeh 数据库绘图和更新

javascript - 如何动态更改链接共享按钮的布局?

node.js - 使用 mongoose 通过 update 方法向 mongodb 中的现有文档添加新字段