디렉토리 심볼릭 링크는 경로가 아닌 inode에 대한 것입니다(예: 디렉토리 하드 링크).

디렉토리 심볼릭 링크는 경로가 아닌 inode에 대한 것입니다(예: 디렉토리 하드 링크).

디렉토리 하드 링크가 불가능한 이유를 더 잘 이해하려고 노력 중입니다. 대략적으로 말하면 디렉토리와 파일은 다음과 같습니다.

directory
---------
inode            # exposed as .
inode_of_parent  # exposed as ..
content: 
    mapping from names to inodes
    a hardlink is just another name->inode entry in the mapping

file
----
inode
content

디렉토리 심볼릭 링크에 대한 제가 이해한 바는 다음과 같습니다.

symlink
-------
inode            # exposed as .  but only if the symlink can be followed
inode_of_parent  # exposed as .. but only if the symlink can be followed
target:
   a named path that, effectively, points to another inode's content

심볼릭 링크의 대상은 다른 inode를 가리키지 않으므로 inode의 링크 수가 증가하지 않는다는 점은 주목할 가치가 있습니다. 대상이 유효하지 않은 것으로 확인되면 심볼릭 링크가 유효하지 않은 것입니다.

나는 읽었다UNIX/Linux에서 디렉토리 하드 링크가 허용되지 않는 이유는 무엇입니까?이는 대부분 편의성(그리고 아마도 성능) 때문인 것 같습니다. [여담: 어쨌든, ".."는 DAG 구조를 효과적으로 파괴하는 것처럼 보이지만 예측 가능한 방식으로 그렇게 하고 하드 링크가 상황을 더욱 복잡하게 만드는 것 같습니다. ] 이 문제에 대한 일부 의견은루프는 처리될 수 있지만 이 논의의 목적에 따라 루프를 피하고 싶다는 점을 기꺼이 받아들입니다. 그렇다면 왜 inode를 가리키는 다른 종류의 심볼릭 링크가 있을 수 없는가?

alternative symlink
-------------------
inode            # exposed as .
inode_of_parent  # exposed as ..
inode_of_target
is_symlink       # this marks it as special and distinct from a directory

기호 링크는 대상의 링크 수를 늘려야 하므로 대상의 이동 및 이름 변경에 강력해집니다. 따라서 기본적으로 하드 링크이지만 특수 플래그로 인해 실제 디렉토리와 혼동될 수 없으므로 루프 문제가 발생하지 않습니다. 상황은 관리 가능한 것처럼 보였습니다.

분명히 이것은 너무 간단합니다. 그래서 이것이 왜 불가능한지 알고 싶습니다. 제가 하는 이야기가 충분히 복잡하지 않을 수도 있으니 필요에 따라 복잡하게 만들어주세요.

관련 정보