当前位置:  开发笔记 > 编程语言 > 正文

在Mac OS X中创建目录硬链接

如何解决《在MacOSX中创建目录硬链接》经验,为你挑选了4个好方法。

如何在Mac OS X中创建指向目录的硬链接?

此功能已添加到Mac OS X v10.5(Leopard)的文件系统中(用于时间机器),但我找不到有关从命令行实际使用它的任何信息.



1> Sam..:

如果有兴趣的话,我已经在Git存储库中捆绑了建议的答案:https://github.com/selkhateeb/hardlink

安装后,创建一个硬链接:

hln source destination

我也注意到该unlink命令在Mac OS X v10.6(Snow Leopard)上不起作用,所以我添加了一个取消链接的选项:

hln -u destination

要安装Hardlink,请使用Homebrew并运行:

brew install hardlink-osx


嗯...似乎在macOS 10.14上我甚至用`sudo`得到错误"Operation not permitted"
值得注意的是,现在这已经出现在[Homebrew]上(https://github.com/Homebrew/homebrew/blob/master/Library/Formula/hardlink-osx.rb).`brew install hardlink-osx`
谢谢.为我工作.但你应该添加Jean-Philippe Pellet评论做README.

2> Freeman..:

不幸的是,苹果已经削弱了ln命令.您可以使用以下程序创建指向目录的硬链接:

#include 
#include 

int main(int argc, char* argv[]) {
 if (argc != 3) {
  fprintf(stderr,"Use: hlink  \n");
  return 1;
 }
 int ret = link(argv[1],argv[2]);
 if (ret != 0)
  perror("link");
 return ret;
}

考虑到硬链接目录可能不在同一个父目录中,因此您可以这样做:

$ gcc hlink.c -o hlink
$ mkdir child1
$ mkdir parent
$ ./hlink child1 parent/clone2


看起来他们修补了这个...在Snow Leopard中试过这个并且我得到"链接:操作不被允许"
@taber:确保在与源目录的父目录不同的目录中创建硬链接(例如,在父/在Freeman的示例中).这是http://osxbook.com/blog/2008/11/09/hfsdebug-40-and-new-hfs-features/中列出的限制之一
嘿,我现在已经使用了一段时间 - 非常感谢.但是,我注意到如果我删除一个硬链接目录(rm -rf),它也会擦除原始源目录的内容.有意义,因为rm -rf遍历dir并逐个文件删除.但是,我希望能够直接删除硬链接.那可能吗?
你试过unlink命令和系统调用吗?
“链接”和“取消链接”调用均不适用于10.13.3(High Sierra),从而导致“不允许操作”。

3> rleber..:

在the_undefined对问题的回答中,关于如何删除目录的硬链接而不删除链接到的其他目录的内容:据我所知,无法使用内置命令从命令行完成.然而,这个小程序(受Freeman的帖子启发)将会这样做:

#include 
#include 

int main(int argc, char* argv[]) {
    if (argc != 2) {
        fprintf(stderr,"Use: hunlink \n");
        return 1;
    }
    int ret = unlink(argv[1]);
    if (ret != 0)
        perror("unlink");
    return ret;
}

继续Freeman的例子,

$ gcc hunlink.c -o hunlink
$ echo "foo bar" > child1/baz.txt
$ ./hunlink parent/clone2

将删除parent/clone2上的硬链接,但保留目录child1和文件child1/baz.txt.



4> Kit Sunde..:

另一种解决方案是使用可通过端口安装的bindfs https://code.google.com/p/bindfs/:

sudo port install bindfs
sudo bindfs ~/source_dir ~/target_dir

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有