如何在Mac-OS-X中创建目录的硬链接?
这个特性已经被添加到他们的Mac OS X v10.5 (豹)文件系统中(用于time machine),但是我找不到任何关于从命令行实际使用它的信息。
发布于 2009-10-10 11:32:59
不幸的是,苹果削弱了ln
命令。您可以使用以下程序创建指向目录的硬链接:
#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
发布于 2011-02-25 22:56:45
如果有人感兴趣,我已经将建议答案打包到了Git存储库中:https://github.com/selkhateeb/hardlink
安装后,使用以下命令创建硬链接:
hln source destination
我还注意到,unlink
命令在Mac-OS-x-v10.6(雪豹)上不起作用,所以我添加了一个取消链接的选项:
hln -u destination
要安装Hardlink,请使用Homebrew并运行:
brew install hardlink-osx
发布于 2010-03-14 05:36:39
在回答the_undefined关于如何删除指向某个目录的硬链接而不删除它所链接的其他目录的内容的问题时:据我所知,不能从命令行使用内置命令来完成此操作。然而,这个小程序(受Freeman的帖子启发)将做到这一点:
#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
。
https://stackoverflow.com/questions/1432540
复制相似问题