Mac OS X에서 디렉토리 하드 링크 생성 [중복
문제
이 질문은 이미 여기에 답이 있습니다.
Mac OS X의 디렉토리에 대한 하드 링크를 어떻게 만들 수 있습니까?
이 기능은 파일 시스템에 추가되었습니다. Mac OS X V10.5 (Leopard) (타임 머신의 경우) 그러나 명령 줄에서 실제로 사용하는 정보를 찾을 수 없었습니다.
해결책
불행히도 애플은 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
다른 팁
관심있는 사람이라면 제안 된 답변을 GIT 저장소에서 번들로 제공했습니다. https://github.com/selkhateeb/hardlink
설치되면 다음과 하드 링크를 만듭니다.
hln source destination
나는 또한 그것을 알아 차렸다 unlink
Mac OS X V10.6 (Snow Leopard)에서는 명령이 작동하지 않으므로 링크 해제 옵션을 추가했습니다.
hln -u destination
하드 링크를 설치하려면 사용하십시오 고향 그리고 달리기 :
brew install hardlink-osx
The_undefined의 답변에서 연결된 다른 디렉토리의 내용을 제거하지 않고 디렉토리로 하드 링크를 제거하는 방법에 대해 설명합니다. . 그러나이 작은 프로그램 (Freeman 's Post에서 영감을 얻음)은 다음과 같습니다.
#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;
}
Freeman의 예를 따르려면
$ gcc hunlink.c -o hunlink
$ echo "foo bar" > child1/baz.txt
$ ./hunlink parent/clone2
Parent/Clone2에서 하드 링크를 제거하지만 디렉토리를 남겨 둡니다. child1
그리고 파일 child1/baz.txt
홀로.
또 다른 해결책은 Bindfs를 사용하는 것입니다 https://code.google.com/p/bindfs/ 포트를 통해 설치할 수 있습니다.
sudo port install bindfs
sudo bindfs ~/source_dir ~/target_dir