폴더나 파일에 대해서 자주 사용하시는 경우, 보통 단축 아이콘(.lnk)을 많이 만들어쓰시죠? 아이콘을 더블 클릭하면, 해당 폴더나 파일을 액세스 할 수 있다는 장점이 있지만 단축 아이콘은 Windows 탐색기를 제외하고는 여타 다른 운영 체제나 응용 프로그램에서 사용할 수 없다는 단점이 있습니다.

파일에 대해서 컨텐츠를 가리키고 있는 하드 링크(Hard Link) 기능과는 달리 Windows Vista, Windows Server 2008에서는 심볼 링크(Symbolic Link)라는 기능을 제공합니다. 이 기능은 대부분의 응용 프로그램 뿐만 아니라, Unix/Linux에서도 사용할 수 있다는 장점이 있습니다. 이러한 Reparse Point의 성격을 가진 또하나의 기능으로는 디렉터리 교차점(Junction)이 있죠.

Windows Vista나 Windows Server 2008내에서 탐색기에서 보이지 않는 Document and Settings 폴더에 대해서 명령어 프롬프트나 탐색기에서 접근을 시도하면, 접근이 되는 것을 보실 수 있습니다. 해당 폴더를 살펴보면 앞에 화살표가 붙어 있는 단축 아이콘과 비슷한 폴더 형태를 가지고 있습니다.

image image

명령어 프롬프트에서 dir /al (L의 의미는 Reparse Point를 보여달라는 것입니다.)를 해보면 Junction, 즉 디렉터리 교차점이 보이는 것을 보실 수 있죠. 이러한 형태로 Windows Vista나 Windows Server 2008에서는 레가시 응용 프로그램이 사용자의 프로파일을 접근할 때, 실제 폴더는 존재하지 않지만, 해당 폴더를 C:\Users로 다시 파싱시켜 접근시키게 됩니다.

Windows Server 2003까지는 이러한 Reparse Point(심볼 링크 제외)에 대해서 FSUTIL이라는 툴을 사용했었습니다. 이제는 MKLINK라는 명령어 프롬프트 툴을 이용해서 여러 링크를 만드실 수 있습니다.

image

하드 링크(Hard Link)와 심볼 링크(Symbolic Link)의 차이점은 무엇일까요? 쉽게 하드 링크는 파일에 대한 컨텐츠와 연결된 파일의 디렉터리 엔트리를 하나 더 생성해주는 것입니다. 따라서 하드 링크를 생성했을 경우에는 원본 컨텐츠에 연결된 또다른 디렉터리 엔트리가 생성된다고 보시면 됩니다. 따라서, 원본 파일이 지워지더라도, 하드 링크로 생성된 파일이 모두다 삭제되기 전까지 컨텐츠에 대한 접근은 가능합니다. 그렇다고 동일한 복제본을 생성하는 것은 아닙니다. NTFS 파일 시스템 상에서 실제 파일의 컨텐츠를 가리키는 링크가 디렉터리 엔트리의 형태로 생성되는 것이니까요.

심볼 링크는 디렉터리 엔트리를 생성하는 것이 아니라, 대상에 대한 위치 정보를 알려주는 것입니다. 즉 해당 링크에 접근을 시도하면 파싱단계에서 실제 원본의 디렉터리 엔트리와 컨텐츠를 연결해주는 형태죠. 진정한 링크의 형태를 가지는 모양입니다.

image

image

위의 예제를 보시면 이해가 되시나요? Hard-Link.txt의 경우에는 대상인 Empty-H\Hard.txt가 삭제되더라도 내용이 나타납니다. 그렇지만 Symbolic Link의 경우, 대상인 Empty-S\Symbolic.txt를 삭제하면 내용이 나타나지 않게 됩니다.

image

개개별 Reparse Point에 대한 차이점을 정리해놓은 표입니다. 같은 볼륨, 같은 머신등의 여러 제약 사항이 있습니다만, 심볼 링크가 가장 유연하게 사용할 수 있습니다. 폴더나 파일단위, 원격 머신까지...

응용 프로그램 호환성이나 컴퓨팅의 편의성, 이기종 머신에서의 마이그레이션등 활용 가치가 매우 높은 기능입니다. 이제 Windows Server 2008에서 심볼 링크를 사용할 수 있다는 것도 가치있는 일 아닐까요?