【问题标题】:How to test in two paths are hard linkable?如何在两条路径中测试是否可硬链接?
【发布时间】:2012-02-25 19:33:09
【问题描述】:

我在一侧有文件路径以及我想要复制它们的新路径。

如何测试它们是否可以简单地硬链接或应该复制?

【问题讨论】:

    标签: linux unix inode hardlink


    【解决方案1】:

    第 1 步:致电link

    第 2 步:如果它返回 -1 并将 errno 设置为 EXDEV,则进行复制。

    [更新]

    一般来说,没有可移植(可靠)的方法来回答这个问题。我认为最接近的方法是调用statvfs 作为源和目标,然后比较statvfs structuresf_fsid 字段。

    不幸的是,POSIX 不保证任何关于f_fsid 字段的特别内容。这个测试应该可以在 Linux 上运行,除非你问的是 NFS 挂载的文件系统...

    【讨论】:

    • 但它会创建硬链接,我不想这样做 - 我只需要知道它是否可以完成。我也在谈论shell命令:)
    【解决方案2】:

    Nemo's answer 确实是最简单的解决方案:尝试link(2) 系统调用。

    如果您只想知道路径是否可硬链接,甚至不尝试 link(2) 系统调用,您可以找到他们的文件系统,例如使用statfs(2),检查它们是否在同一个文件系统上,并检查文件系统的类型是否足够好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 2020-03-16
      • 2012-06-29
      相关资源
      最近更新 更多