2012-03-04

윈도우 심볼릭링크,하드링크,디렉토리교차점 생성방법 - mklink


심볼릭링크,하드링크,디렉토리교차점 생성방법 - mklink 명령어

원문 - http://goo.gl/bnguG

개인의 필요에 의해서 개인용 윈도우 중 비스타에서 처음 도입된 링크 생성 기능을 정리해둡니다.
비스타에서 처음으로 내장되었기 때문에 XP이하 버전은 mklink가 뭔지도 모릅니다.

윈도우 비스타에서 심볼릭링크(심링크,소프트링크),하드링크,디렉토리교차점 생성 방법

다음 링크들을 생성하는 방법을 설명합니다.
1.심볼릭링크(기호화된 링크, symbolic link, symlink, soft link)
2.하드링크(hard link)
3.디렉토리 교차점(directory junction)

다음 예시들은 문서폴더에 몇가지 파일들의 링크를 생성합니다.

1. 파일에 대한 심볼릭링크(symbolic link) 생성 방법

mklink "%USERPROFILE%\Documents\note.exe" "%SYSTEMROOT%\notepad.exe"
이렇게 하면 문서폴더에 note.exe라는 링크파일이 생깁니다.
실행하면 메모장이 열리겠죠?
바로가기(.lnk)랑 다른점은 실행위치가 다르다는 점입니다.
파일시스템적으로도 더욱더 low level로 연결되어있습니다.
확장자도 exe로 인식된다는 점이 다릅니다.
실제로도 윈도우의 어플리케이션들이 그곳에 실제로 exe파일이 존재하는 것처럼 인식합니다.
대신 원본이 지워지면 링크는 쓸 수 없습니다.


2. 폴더에 대한 심볼릭링크(symbolic link) 생성 방법

mklink /d "%USERPROFILE%\Documents\symlink" "%USERPROFILE%\Pictures"
이렇게 하면 문서폴더에 symlink라는 링크폴더가 생깁니다.
바로가기랑은 폴더 내부접근 방법에서 다릅니다.
만약 Pictures폴더안에 Flower라는 폴더가 있다면
%USERPROFILE%\Pictures\Flower 으로 접근 할 수 있고
%USERPROFILE%\symlink\Flower 로도 접근이 가능합니다.
즉, 주소를 상대적으로 쓸 수 있게됩니다.

네트워크 경로에 대해서도 사용할 수 있습니다.

다음처럼 쓸모는 없지만 그냥 흥미로운 방법으로도 쓸 수 있습니다.
md "D:\test"
mklink /d "D:\test\test" "D:\test"
이렇게 한뒤 D:\test 폴더로 접근하면 안에 test폴더가 있게 됩니다.
그럼 그 폴더에 들어가면 d:\test\test 경로로 들어간게 됩니다.
하지만 그안에 또 test폴더가 있게 됩니다.

cd test를 무한히 반복하다보면... 언젠가 끝은 오지 않습니다.
무한대로 연결됩니다. 하지만 실효성은 그다지...

D:\test\test\test\test\test\test\test\test\test\test\test\test\test\...>_


3. 파일에 대한 하드링크(hard link) 생성 방법

mklink /h "%USERPROFILE%\Documents\note.exe" "%SYSTEMROOT%\notepad.exe"
이렇게 하면 문서폴더에 note.exe라는 링크파일이 생깁니다.
실행하면 메모장이 열리겠죠?
파일 심링크(symlink)와 다른점은 거의 복사(copy)와 같다고 보면 된다는 점입니다.
복사와 다른점은 파일이 가리키는 지점만 복사된다는 점입니다.
전문적인 용어를 잘 모르겠는데... 그 정도만 알고있으면 됩니다.
(제가 이쪽 전문이 아니라서...)

C++같은 언어를 공부하면서 포인터를 배웠을 것입니다.

하드링크가 이와 같습니다.

하드링크를 생성하면 원본을 지워도 링크된 것을 쓸 수 있습니다.
실제로도 윈도우는 하드링크를 링크로 보지않고 실제 파일로 완전히 인식합니다.

원본을 수정하면 하드링크된 것도 바뀌고 그 역도 성립하는건 링크의 기본적인 목적과 부합합니다.

대신 소프트링크와 다른점은 원본이나 하드링크중 어느하나가 삭제되어도 괜찮다는 것입니다.

하지만 delete가 아닌 wipe가 된다면... 둘 중 하나만 지웠을 경우 데이터가 완전히 날라가게 됩니다.


4. 폴더에 대한 디렉토리 교차점(directory junction) 생성 방법

mklink /j "%USERPROFILE%\Documents\symlink" "%USERPROFILE%\Pictures"
이렇게 하면 문서폴더에 symlink라는 링크폴더가 생깁니다.
거의 심링크와 똑같다고 보면됩니다.
심볼릭링크와 다른점은 네트워크 경로는 링크가 생성되지 않는다는 점입니다.

교차점은 다른 운영체제에서는 찾아볼 수 없는데, 심볼릭 링크와 구조적인 차이가 있는 것 같지만 그게 뭔지는 저도 잘 모르겠습니다.


※ Virtual PC에서 호스트O/S(Vista)와 가상O/S(XP) 간의 즐겨찾기 목록 공유하기

(심볼릭 링크, 교차점 활용)

  1. 비스타에서 아무 폴더나 적당한 위치에 만든다. 되도록이면 vmc파일과 가까운 곳에 두는게 정리하는데 도움이 되는 것 같다.
  2. 폴더안에 배치파일을 만들거나 cmd를 사용해 진입해서 다음 명령을 실행한다.mklink /j "{새로만든폴더경로}\Favorites" "%USERPROFILE%\Favorites"
  3. 연결할 Virtual PC의 Edit > Settings 메뉴로 들어간다.
  4. Shared Folders > Share Folder...
  5. Share every time에 체크하고 원하는 드라이브 문자를 고른뒤 아까 만들었던 폴더를 선택하고 OK를 누르고 Setting 창을 닫는다.
  6. 가상PC로 들어가서 탐색기를 열어 주소창에 %USERPROFILE%을 입력하고 엔터를 친다.
  7. 겨찾기 폴더에 들어가서 desktop.ini파일을 지운다. 보이지 않으면 폴더 옵션에서 보이도록 설정한다.
  8. 다시 나와서 즐겨찾기 폴더를 선택한뒤 CTRL+Z를 눌러서 잘라내기 한다.
  9. 새로 마운트 시킨 네트워크 드라이브로 이동해서 붙여넣기 한다. 폴더가 이미있다고 나올텐데 그냥 덮어쓴다. 아까 desktop.ini를 지우지 않았다면 이미 파일이 있다고 나올 것이다.
  10. Internet Explorer를 켜서 즐겨찾기를 눌러 호스트O/S의 즐겨찾기 목록이 나오는지 확인한다.
  11. 가상O/S에서 아무 페이지나 즐겨찾기 등록을 해보고 비스타의 Internet Explorer에서 즐겨찾기 목록에 변화가 있는지 확인한다.
  12. 끝.
    (이렇게 안하고 사용자폴더를 통째로 마운트 시켜도 되지만 가상O/S에서 호스트에 접근하기가 더 쉽기 때문에 위험하다. 링크를 쓰지않는 다른방법으로는 그냥 비스타의 즐겨찾기 안에 폴더를 하나 더 만들고 즐겨찾기 폴더를 마운트시키면 되지만 한꺼풀 더 들어가야한다.)

댓글 없음:

댓글 쓰기