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 백업 기능에 사용되는 버전을 제공합니다.
더 읽을 거리 :