태그 보관물: NTFS

NTFS Hard link, Junction, Symbolic Link

리눅스 저널링 시스템과 비슷하게, NTFS에서도 하드 링크, 심볼릭 링크 등을 지원한다. 그것도 이미 윈도우 2000때부터 지원했던 모양.
물론 거의 묻혀있던 기능이지만, Vista 들어서 UAC 가상화를 지원하면서부터 매우 중요하게 사용되고 있다.

각설 대충 간단히 설명하면 다음과 같다.

펼쳐라

* Hard link : 리눅스의 그것과 정확하게 같은 기능을 한다. 파일에 대한 접근점(Entry point)을 추가로 생성한다.
하드 링크는 같은 파일의 서로 다른 이름이므로, 하나를 삭제(=Unlink)해도 다른 하드 링크가 남아있는 한 파일은 살아 있다.
파일 접근점은 데이터와 같은 볼륨에 존재해야 한다. 다른 볼륨의 파일을 가리키는 하드 링크는 만들 수 없다는 이야기.

* Symbolic link : 리눅스의 그것과 정확하게 같은 기능을 한다. 실은 유닉스 시스템과의 호환성 때문에 Vista 들어서 지원된 기능.
리눅스와 마찬가지로 심볼릭 링크는 대상 확인을 하지 않는다. 존재하지 않는 파일/폴더에 대한 심볼릭 링크 작성도 가능하다.
다만, 리눅스와는 달리 대상을 파일 자격으로 가리키는 <SYMLINK>, 폴더 자격으로 가리키는 <SYMLINKD>를 구분하여 사용한다.
폴더를 <SYMLINK>로 링크하면? 안 열린다. 반대도 마찬가지.

* Junction or Soft link : 역할은 <SYMLINKD>와 유사. 폴더에만 사용할 수 있으며, 정식 번역도 “폴더 교차점”이다.
하드 링크와 달리 다른 볼륨의 폴더를 가리킬 수도 있다. Vista 이전에는 심볼릭 링크가 없었으니 교차점을 사용해야 했다.
교차점은 NTFS 고유의 기능이므로, NTFS 폴더만 가르킬 수 있다. 네트워크 폴더에는 사용할 수 없다는 의미이다.
(심볼릭 링크는 네트워크 폴더에도 사용 가능.)

접어라

문제는, 윈도우 2000이나 XP에 포함된 윈도우 탐색기는 이 기능들을 제대로 지원 못한다.
하드 링크야 그렇다손 쳐도, 교차점을 삭제하면 재귀적 삭제를 돌면서 원본 데이터를 날려먹는 문제가 있다. 자료 날려먹기 딱 좋은 기능.
이게 Vista 들어서부터 교차점을 제대로 인식하게 되었고, UAC 구현의 핵심으로 작용하게 된다.
UAC는 결국 프로그램을 모래상자 위에서 돌리는 기능인데, Application Data 폴더를 교차점으로 지정함으로써 이를 구현하게 된 것.

물론 일반 사용자는 이런거 신경쓸 일은 없을 것이다.
나처럼 여러 하드디스크에 데이터가 널려 있는 경우 딱히 지랄지랄 안 하고도 한 폴더에 모아서 관리하는 정도에나 쓸만한 기능이다.

만약 이러한 기능에 흥미가 있다면, 가급적 심볼릭 링크를 사용하는 것을 권한다.
하드 링크는 파일 관리가 복잡해지기 때문에 거의 사용하지 않으며, 교차점은 XP에서 파일 날려먹을 가능성이 있다.
물론 심볼릭 링크는 XP에서 아예 지원을 못하지만, 적어도 잘못 지워서 파일 날려먹는 것보다는 나을 테니까 뭐.

… 단축 아이콘(Windows Shortcut)과 차이점이 뭐냐고?
그럼 넌 이런 기능 몰라도 된다. 그냥 단축 아이콘 써라.