CIL 코드용 IO 추상화 라이브러리를 구축 중인데 NTFS의 두 폴더 간 연결과 하드 링크 간의 차이를 이해하는 데 어려움을 겪고 있습니다.
그들은 평등합니까? 어떤 차이점을 알아야 합니까?
답변1
NTFS 조인 포인트는 사실상 기호 링크 역할을 하는 재분석 지점이지만 절대 경로를 통해 로컬 디렉터리를 찾는 것으로 제한됩니다.
당신이 가지고 있다고 가정
C:\>mkdir a b
C:\>linkd b\c C:\a
무슨 일이 발생하면 카탈로그 테이블에 C:\b
이라는 이름의 카탈로그 항목이 삽입되는데, c
그 속성에는 $Reparse
대상에 대한 연결 지점임을 지정하는 데이터가 포함되어 있습니다 C:\a
.
Windows 2000(재분석 지점과 조인 포인트가 도입된 경우)이 재분석 지점을 발견하면 적절한 핸들러로 전달되었습니다. 이 경우 아래 경로에 액세스하면 C:\b\c
조인 포인트의 핸들러가 해당 경로를 대체하고 C:\b\c
그곳 C:\a
에서 정상적인 파일 시스템 작업이 계속됩니다.
다른 유형의 재분석 지점을 가로채고 처리하기 위해 추가 파일 시스템 필터를 설치할 수 있습니다. Windows Vista, Server 2008 이상에는 파일이나 디렉터리, 절대 또는 상대를 가리킬 수 있는 NTFS의 "symlink" 재분석 지점에 대한 처리기가 함께 제공됩니다. , 로컬 또는 원격 - 다른 시스템의 심볼릭 링크와 매우 유사합니다.
또한 NTFS는 UNIX와 마찬가지로 하드 링크를 지원합니다. 여러 디렉터리 항목이 실제 파일 데이터인 동일한 "inode"를 가리킬 수 있습니다. 이는 재분석 지점과 관련이 없습니다. 거의 모든 시스템에서는 파일만 하드 링크될 수 있습니다. 하드 링크된 디렉토리에는 위험이 따릅니다. (그 외에도 ..
하드 링크된 디렉토리 항목은 무엇을 가리켜야 합니까?)
답변2
디렉터리에 대한 NTFS 재분석 지점은 Linux/UNIX의 루프백 탑재와 매우 유사합니다.
파일에 대한 NTFS 하드 링크는 Linux/UNIX의 파일에 대한 하드 링크와 매우 유사합니다.
NTFS 기호 링크는 Linux/UNIX의 기호 링크와 매우 유사합니다.
Windows용 Cygwin의 이전 버전은 재분석 지점을 하드 링크로 처리하여 /usr/bin/find가 파일 시스템의 주기에 대해 불평하게 했습니다. POSIX 호환 프로그램과 관련하여 Cygwin의 이후 버전에서는 재분석 지점을 기호 링크와 동일하게 처리합니다.