윈도우에는 '바로가기'라는 기능이 있다. 원하는 폴더나 파일을 .lnk라는 확장자로 가리켜, 그 파일을 클릭하면 원본 파일이나 폴더를 실행하는 기능이다. 다만 이 lnk 확장자를 가진 '파일'이 아니라, 시스템 상에서 어떤 폴더를 진입했을 때 다른 폴더로 인식이 되도록 할 수 있다. 이는 본래 리눅스 운영체제에서 익히 쓰는 심볼릭 링크의 테크닉이다. 윈도우에도 이 기능을 지원하고 있으므로 사용해볼 수 있다.

mklink 명령어 / 심볼릭 링크, 하드 링크, 정션

글마다 다소 내용이 다른데 일단 윈도우에서 기본적으로 지원하는 바로가기랑 mklink를 통해 만든 링크는 다른 것 같다. 윈도우에서 기본적으로 오른클릭하면 '바로가기 만들기'라는 메뉴가 있는데, 이를 통해 폴더에 대한 바로가기를 만들경우, 그 파일의 속성을 보면 엄연히 '파일'로 인식이 된다. lnk확장자를 지닌.

따라서 mklink를 통한 심볼릭 링크와 이 바로가기는 다르다고 판단해 볼 수 있다. 리눅스 체제에선 오직 심볼릭 링크만 존재하는지도 모르겠다. 그리고 좀 더 몇가지 테스트를 해본 결과, 심볼릭 링크도 본래 파일 상태에선 .symlink 확장자로 저장된 파일인데 윈도우 시스템 상에서 이를 완벽한 '그 폴더나 파일'로 인식하는 것처럼 보인다. 실제로 심볼릭 링크나 정션으로 생성된 폴더 링크를 오른클릭해 속성을 보면, 실제 폴더의 속성과 동일하게 보인다.

이 기능은 여러모로 유용하게 적재적소에 쓸 수 있다. 예를 들면 용량이 큰 게임의 내용을 옮기고 싶을 때, 데이터 폴더를 타 드라이브로 옮긴 뒤 원래 경로에 심볼릭 링크를 생성한다던지, FTP 파일 서버에서 또 홈 등록하긴 귀찮은데 타 드라이브의 일부분을 연결하고싶을 때 심볼릭 링크로 그 폴더를 경로안에 둔다던지 등. 사용하기 나름이다.

 

방법은 다음과 같다. cmd를 관리자 권한으로 킨 뒤, 원하는 경로에 가거나 모든 경로를 붙여넣어서

mklink (만들 폴더 or 파일 이름, 경로) (링크 원본의 경로)

를 입력하면 된다.

 

옵션으로, /h는 하드 링크를 말한다. 쓸 일이 없다. 하드에 있는 본래 데이터를 연결하는 것인데, 이는 우리가 탐색기로 보는 모든 파일이 하드 링크이다. 사실 다소 의미를 지니는 방법인데, 자세한 원리는 아래를 보자. 기본값은 심볼릭 링크고 폴더의 경우는 /d를 사용해주면 된다. /j는 정션 옵션인데, 심볼릭 링크 하위호환 느낌이다. 과거 xp기능이라는데..

정션과 심볼릭링크에 있어서 바로가기 인식이나 드라이브 구분에 있어서 약간 차이가 나는데, 원리 자체는 비슷하다. 

자세한 이해는 아래 글을 참조하자. 경로에 공백이 있을 경우에는 ""로 감싸준다.

링크의 개념
심볼릭 링크, 정션의 차이