문제

이 질문은 이미 여기에 답이 있습니다.

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top