在MacOS X中创build目录硬链接?

我如何创build一个硬链接到OSX中的目录?

这个特性已经被添加到他们的文件系统中(用于时间机器),但是我没有find任何有关从命令行实际使用它的信息。

不幸的是,苹果已经瘫痪了指挥官。 您可以使用以下程序创build一个到目录的硬链接:

 #include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { if (argc != 3) { fprintf(stderr,"Use: hlink <src_dir> <target_dir>\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 

如果有人感兴趣,我已经在git代码中提供了build议的答案: https : //github.com/selkhateeb/hardlink

一旦安装,创build一个硬链接:

 hln source destination 

我也注意到unlink命令在雪豹上不起作用,所以我添加了一个选项来取消链接:

 hln -u destination 

要安装Hardlink,请使用自制软件并运行:

 brew install hardlink-osx 

在回答the_undefined关于如何删除一个硬链接到一个目录的问题,而不删除其链接到的其他目录的内容:据我所知,不能从命令行使用内置命令完成。 然而,这个小程序(由弗里曼的文章启发)将做到这一点:

 #include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { if (argc != 2) { fprintf(stderr,"Use: hunlink <dir>\n"); return 1; } int ret = unlink(argv[1]); if (ret != 0) perror("unlink"); return ret; } 

继续弗里曼的例子,

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

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

另一个解决scheme是使用bindfs https://code.google.com/p/bindfs/可以通过端口安装:;

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