OP의 질문에 언급되어 mount --bind있습니다. 빠른 검사는 마운트 된 디렉토리의 링크 수를 수정하지 않음을 보여줍니다. 하드 링크는 항상 링크 수를 수정 하며을 사용하여 볼 수 있습니다 ls -ld.
일반적으로 (대부분의 유닉스 계열 시스템) 디렉토리에 대한 하드 링크 수는 해당 이름에 연결된 디렉토리 수입니다.
".." (부모 디렉토리)
"." (디렉토리 자체)
- 하위 디렉토리
(보통) 더 유익한 정보 페이지 를 읽으면 다른 사람들 이 한 것처럼 발견 할 수 있습니다 .
Oh great, one spends hours tying to find what is wrong only to
discover,
$ info ln
On all existing implementations, you cannot make a hard link to a
directory, and hard links cannot cross filesystem boundaries. (These
restrictions are not mandated by POSIX, however.)
Therefore, kindly say everywhere you say super-user only,
instead say "few systems, super-user only".
현재 는 말로되어 있지만
대부분의 시스템은 디렉토리에 하드 링크를 만드는 것을 금지합니다. 허용되는 경우 수퍼 유저 만 그렇게 할 수 있습니다 (사이클을 만들면 다른 많은 유틸리티에 문제가 발생할 수 있으므로주의해야합니다). 하드 링크는 파일 시스템 경계를 넘을 수 없습니다. 그러나 이러한 제한 사항은 POSIX에서 의무화하지 않습니다.
디렉토리에 대한 하드 링크 작성 및 제거는 디렉토리가 링크 해제 된 경우 파일 손실을 막기위한 제한된 기능입니다. C 운영 체제 인터페이스에서의 링크 / 링크 해제 조작은 대칭 이므로 디렉토리에 대한 링크는 일반적으로 mkdir / rmdir 호출에서만 수행됩니다.
많은 GNU coreutils는 20-30 년 전에 실제 박물관 조각이 여전히 사용 중일 때 쓰여지고 문서화되었다는 것을 명심하십시오. 하드 링크 관련 에서 언급했듯이 원래 는 mkdir / rmdir 호출 이 없었습니다. 하드 링크를 사용하여 디렉토리가 특권 작업으로 작성되었습니다. 언급 된 문제를 해결하기 위해 시스템 호출이 추가되면이 모든 것이 사라졌습니다. 그러나 문서는이 시스템을 유지 관리자의 메모리를 지나서 계속 참조합니다. 의문의 여지가있는 옵션은 전임자 fileutils( 1990 년대 중반 textutils과 결합 shellutils하여 형태 coreutils)에 있었다. 변경 로그의 일부 항목은 기능의 출처를 명확하게하는 데 도움이 될 수 있습니다.
Mon Jul 23 16:57:44 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* cp.c (copy): Make +update operate silently, like +one-file-system.
* ln.c: Add -F as synonym for -d, for SunOS compatibility.
Wed Feb 21 11:13:26 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* ln.c (error): New function.
(main, do_link): Call error instead of fprintf and exit.
(main): Recognize new -d +directory option to allow superuser to
make hard links to dirs, like the BSD ln -f option.
(do_link): Don't allow hard links to dirs (they are hard to
get rid of -- rmdir and unlink don't do it), unless -d was given.
(usage): Mention -d +directory option.
예를 들어이 기능이 적용된 골동품 중 하나가 SunOS라는 것을 알 수 있습니다. 해당 매뉴얼 페이지에서 다음과 같이 말했습니다.
OPTIONS
-f Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
SYSTEM V OPTIONS
-f Force files to be linked without displaying permissions, asking
questions or reporting errors.
-F Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
문서에서 언급했듯이이 기능 (및 해당 옵션은 POSIX에는없고 이유를 설명 하는 이론적 섹션을 참조하십시오 .) 대신이 기능은이라는 새 명령 (GNU coreutils에서 제공)으로 이동되었습니다 link. 명령 자체가 모호 하므로 표준에서 사용 하려면 함수 호출 에 대한 설명을 읽어야 하지만 표준에서는 필수 권한에 대한 면책 조항을 전달하는 것 외에 명령이 작동하는 조건을 명확하게 설명하지 않습니다. 이를 위해서는 표준 외부의 시스템 종속 기능으로 이동해야합니다.
이 기능은 파일 계층 구조에서 루프를 생성하거나 파일 시스템을 손상시킬 수 있으므로 대부분의 기존 구현에서 디렉토리에 대한 링크는 수퍼 유저로 제한됩니다. POSIX.1-2008의이 책은 이것을 금지 link()하고 unlink()그렇게 함으로써 그 철학을 계속합니다 . 구현자가 그러한 확장을 설계하면 다른 기능도 가능합니다.
이 있는 일반 번호 (2 개 플러스 하위 디렉토리)를 넘어 디렉토리에 하드 링크를 사용하는 시스템은.
OSX는 일반 파일 용 디렉토리에 여러 개의 하드 링크를 사용 합니다 . 이 사용을 지원하지 않습니다 ln( 매뉴얼 페이지 참조 ). Time Machine의 매직 작동 방식 에 따르면 Time Machine 백업 기능에 사용되는 버전을 제공합니다.
더 읽을 거리 :