자주 사용하는 폴더를 드라이브로 지정하기 - Subst

드라이브 경로를 설명하는 글에서 특정 볼륨(파티션)을 비어있는 폴더에 탑재하여 드라이브를 폴더처럼 사용하는 방법을 이야기드린 적이 있었죠. 이번에는 그것과는 좀 다른 개념이긴 한데 반대로 특정 폴더를 드라이브로 사용하는 방법에 대해서 이야기를 해보도록 하겠습니다.

폴더를 드라이브로 지정하는 것을 가상 드라이브라고 하는데, 윈도우에서 이를 담당하는 명령은 Subst 입니다. 사용법은 매우 간단합니다. 폴더에 연결해서 사용할 비어있는 드라이브 문자를 지정해주고 원하는 폴더 경로를 입력해주면 되죠.


폴더를 드라이브로 연결(가상 드라이브 연결)

subst X: "D:\Data"

subst [사용할 드라이브] [연결할 폴더 경로]


가상 드라이브 연결 제거

subst X: /d

subst [연결된 드라이브] /d


여기에 이제 매개 변수 없이 Subst 명령만 내리면 현재 가상 드라이브로 연결된 목록을 출력해줍니다. 간단하죠? 그럼 실제로 사용하는 모습을 보도록 하겠습니다.


예제 1




현재 시스템의 드라이브 상태는 위와 같고, 이 상태에서 위의 D:\Data 폴더를 보다 접근하기 쉽게 X: 드라이브로 연결을 해보도록 하겠습니다.

명령은 폴더 경로에 띄어쓰기가 있다면 반드시 전체 경로를 ""(큰 따옴표)로 묶어주셔야 합니다. 그러니 그냥 평상시에도 큰 따옴표를 사용하는 것을 습관을 들이는 게 좋습니다. 그리고 명령은 결과를 출력해주지 않기 때문에 작업 후 매개 변수 없이 subst 만 내려서 잘 연결이 되었는지 확인을 합니다.

종합하면 명령 프롬프트를 실행한 후 아래와 같이 명령을 내려주시면 됩니다.

subst X: "D:\Data"
subst




그러면 아래와 같이 내 컴퓨터를 통해 살펴보면 X: 드라이브가 생성된 것을 확인할 수 있고, X: 드라이브로 들어가면 연결된 D:\Data 의 내용이 출력이 됩니다. 즉, X: <-> D:\Data 로 서로 연결된 상태인 것입니다. [드라이브 여유 공간 등의 정보는 연결된 폴더가 속한 드라이브의 정보가 출력됨]



참고로 이와 같은 Subst 명령을 편리하게 사용할 수 있도록 GUI 로 구현한게 Visual Subst 라는 프로그램입니다. 사용법은 Subst 와 동일합니다. 참고하세요.

Visual Subst 1.0.6 - 간편하게 특정 폴더를 드라이브로 연결하기






항상 가상 드라이브를 연결하는 방법

이러한 Subst 를 통한 가상 드라이브의 연결에는 사소하지만 치명적인 문제가 하나 있는데요. 그것은 윈도우가 종료되면 가상 드라이브의 연결도 끊긴다는 것입니다. 그리하여 특정 폴더를 항상 드라이브로 연결하려면 윈도우가 부팅될 때마다 연결을 해주거나 또는 레지스트리를 활용해야 합니다.



1. 시작 프로그램의 활용

Subst 를 사용하여 가상 드라이브를 연결하면 재부팅시 연결이 끊기는 문제는 윈도우의 시작 프로그램을 활용하면 해결할 수 있습니다. 간단하게 현재 사용자 계정으로 로그온할 때마다 D:\Data 폴더를 X: 드라이브로 연결하고자 한다면, 아래와 같이 시작 프로그램 레지스트리에 Subst 명령을 등록하면 되죠. [명령을 배치 파일로 작성하여 시작프로그램 폴더에 넣어도 됩니다.]

[윈도우 7] 윈도우 시작 프로그램 등록과 레지스트리, 배치 파일 팁

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run





2. Dos Devices 레지스트리의 활용

그런데 이러한 Subst 명령의 시작 프로그램 등록 말고도 Dos Devices 라는 레지스트리를 통해 항상 특정 폴더를 드라이브로 연결시키는 것이 가능합니다. 해당 작업은 아래의 경로에서 이루어집니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices


그럼 실제로 지금까지 글에서 알아본 것과 동일하게 D:\Data 폴더를 X: 드라이브로 연결해보도록 하겠습니다. 방법은 아래와 같습니다.

01. 위의 레지스트리 키 하위에 문자열 값(REG_SZ)을 만들고 값의 이름을 X: 값 데이터를 \DosDevices\D:\Data 로 지정합니다.


02. 시스템을 재부팅합니다.

참고로 해당 레지스트리에서 값 데이터로 사용할 수 있는 경로는 다음과 같습니다.

\??\D:\Data
\DosDevices\D:\Data
\Device\Mup\127.0.0.1\D$\Data


이를 통해 네트워크로 공유된 폴더도 가상 드라이브로 지정이 가능한 것을 알 수 있지만, 실제로 연결될 때에는 연결이 끊긴 장치로 표시되고(그래도 접근은 됩니다), 이와 비슷한 네트워크 드라이브라는 기능이 있기 때문에, 이러한 방식의 연결은 개인적으로 추천하지 않습니다.

그러니 로컬에 속한 폴더만 가상 드라이브로 지정하여 사용하세요.


즉, 원하는 드라이브 문자를 값의 이름으로 경로를 \DosDevices 형식으로 넣어주면 되는 것이죠. 간단하죠?

이와 같이 Subst 명령을 통하지 않고도 폴더를 가상 드라이브로 연결할 수 있고, 이것은 Subst 명령과는 다르게 윈도우가 재시작되더라도 항상 연결이 유지됩니다. 나머지 연결된 가상 드라이브의 특성은 Subst 로 연결한 것과 동일합니다. 그러니 굳이 위의 시작 프로그램에 Subst 명령을 등록하는 방법을 사용하지 않아도 되는 것이죠.

근데 Subst 명령을 시작 프로그램에 등록하는 방법이나 이거나 어차피 레지스트리를 편집해야 하고, 그래서 작업의 난이도도 비슷하고, 결과는 완전 똑같으니 뭐가 더 낫다고 할 순 없겠네요. 그냥 이런 방법도 있다는 것을 알아두시고 각자 끌리는 방법을 사용하시면 될 듯 합니다.




가상 드라이브의 레이블을 변경하는 방법

참고로 이렇게 폴더와 연결된 가상 드라이브는 정식적인 볼륨이 아니기 때문에 당연하게도 포맷 등 볼륨과 관련된 명령은 사용할 수 없습니다. 거기에 더해 속성을 통해 볼륨 레이블을 설정하려고 하면 오류가 나며 안 됩니다. [볼륨 레이블은 볼륨에 저장되는 볼륨 정보이고 이건 볼륨이 아니니까]





근데 내 컴퓨터에서 해당 가상 드라이브를 선택하고 키보드의 F2 키를 눌러 이름 바꾸기를 통해 레이블을 바꿔주면 그건 또 적용이 됩니다. [이렇게 해도 볼륨 레이블은 마찬가지로 볼륨이 아닌지라 비어 있습니다.] 그리고 이렇게 지정된 레이블은 해당 가상 드라이브의 연결이 끊긴 후 다시 연결되더라도[재부팅 되더라도] 계속 유지가 되구요. 그러니 연결된 가상 드라이브의 레이블을 바꾸고 싶다면 이 방법을 사용하시면 될 듯 합니다.



근데 생각해보니까 희한하죠? 사실 내 컴퓨터에서 F2 를 통해 볼륨 레이블을 바꾸는 건 널리 알려진 방법 중에 하나인데요. 아마 이게 원래는 윈도우에 저장되는 해당 드라이브에 대한 레이블인데, 그 대상이 볼륨일 경우 해당 볼륨의 볼륨 레이블을 그에 맞춰 변경해주는 것인 듯 합니다.

뭐 자세한 건 레지스트리를 뒤져보면 뭔가가 나오겠지만 굳이 피곤하게 그러고 싶진 않군요. 되잖아요? 그럼 그걸로 그냥 넘기죠. 저도 가끔은 파고들기 피곤할 때도 있답니다.

이 글은 여기까지 하죠. 이상입니다. ^^

드라이브 경로와 가상 드라이브 간단 정리

드라이브 -> 폴더 = 드라이브 경로(Mount)
폴더 -> 드라이브 = 가상 드라이브(Virtual Drive)



어쨌든 둘의 개념은 좀 다르지만, 드라이브가 폴더에 탑재되거나, 폴더가 드라이브에 연결되면, 해당 폴더 - 드라이브 두 경로가 동일한 대상을 가르키는 겁니다.

참고로 드라이브 경로는 드라이브(볼륨)을 폴더라는 경로를 통해서도 접근할 수 있게 그 위에 탑재시키는, 그러니까 폴더 위에 드라이브를 얹어놓는 느낌? 뭐 그런 개념이고요. 가상 드라이브는 드라이브를 통해 곧바로 특정 폴더의 데이터에 접근할 수 있게 서로 연결해놓는 개념입니다. 뭔가 비슷해 보이지만 개념은 좀 다르죠? 그게 그건거 같기도 하고... 그러니 그냥 크게 신경 쓰지 마시고 그러려니 하시면서 적재적소에 이용만 잘하면 됩니다. ^^


※ 그래서 드라이브 경로의 경우 정확하게는 [드라이브 -> 폴더] 가 아닌 [볼륨 -> 폴더] 이지만, 운율도 맞출 겸 우리 이 글에서는 그렇게 깊이 생각하지는 말게요. ^^;






 

 

신고
캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. GK 2012.06.10 05:14 신고  댓글주소  수정/삭제  댓글쓰기
    글 잘읽었습니다 (사실 위에만 조금 읽엇습니다..;)

    폴더를 드라이브로 만든 가상드라이브를 암호화 할수는 없나요? BitLocker 같은걸로요..

    diskmgmt.msc에서 보니 드라이브가 따로 잇지않아서 다른 프로그램을 사용하지 않는이상 불가능할거 같기도 한데... (A:로 만들엇는데 디스크관리자에는 A:가 안뜨네여)
    • BlogIcon CApple 2012.06.10 05:47 신고  댓글주소  수정/삭제
      쉽게 생각하시면 그냥 링크라고 생각하시면 됩니다. 그래서 드라이브와 관련된 작업들은(포맷 같은 것들) 되질 않습니다. ㅜ_ㅜ
  2. 권영욱 2012.11.27 09:33 신고  댓글주소  수정/삭제  댓글쓰기
    안녕하세요~ 문의를 드려도 되는지 모르겠지만..^^
    실례가 되지 않는다면.. 문의를 드리겠습니다.. 죄송합니당~

    1. 윈도 커멘도로 보면 컴퓨터에 가상 시디롬으로 F 가 잡혀있습니다.
    (이전에 데몬이나 매직 디스크등 가상시디 프로그램에서 사용했던것 같습니다.)
    2. 근데 내컴퓨터-> 관리에 들어가면 보면 CD는 F 는 안나오고 E 로 나와있습니다.
    3. F 는 제가 외장하드에 고정 드라이브로 사용하는 것인데 갑자기 인식오류가 나서
    이것 저것 오류 복구하고 보니(inpage 오류) 아마 이것이 문제가 아니었나 싶습니다.
    4. 가상 시디 프로그램에서 다 찾아봐도 F 라는 디스크는 없습니다. E D G H..등
    5. F 디스크(가상시디)를 삭제하려면.. 어떻게 해야 하는지요..



    • BlogIcon CApple 2012.11.27 09:43 신고  댓글주소  수정/삭제
      가상 시디 프로그램 자체 내에서 무슨 오류가 생긴 듯 합니다. 일단 먼저 가상 디스크 프로그램을 깨끗하게 지우고 다시 설치해보는 게 우선일 듯 합니다. 예전에 사용하던 가상 시디 프로그램에서 생성된 것이라면 해당 가상 시디 프로그램을 설치했다가 다시 지워보는 것도 좋을 듯 하고요.
  3. 천사와의데이트 2013.05.04 15:03 신고  댓글주소  수정/삭제  댓글쓰기
    윈도우 8에서는 F2로 이름변경이 안되는군요
    • 천사와의데이트 2013.05.04 15:32 신고  댓글주소  수정/삭제
      F2로 변경되는 조건이 기존에 있던 하드의 라벨이 없어야 한다입니다.
      결국 라벨을 지우고 레지 수정으로 해결


      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons

      이곳으로 가서 키를 만듭니다.



      subst d: c:\abc

      c의 라벨을 없애고 레지스트리에서

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons

      키 생성 C
      키 생성 DefaultLabel

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\C\DefaultLabel

      이렇게 해서 기본값에 원하는 라벨을 적어줍니다.
    • BlogIcon CApple 2013.05.05 10:34 신고  댓글주소  수정/삭제
      좋은 정보 감사합니다. ^^
  4. mini 2014.02.21 18:11 신고  댓글주소  수정/삭제  댓글쓰기
    안녕하세요~ 좋은 정보 감사합니다^^

    말씀하셨던 subst를 통해 가상 드라이브 생성 시 로컬 하드 디스크 드라이브로 설정되는데요,
    만약 경로를 로컬이 아닌 네트워크 주소(ex. 스카이드라이브 주소)로 설정하면 네트워크 드라이브로 잡히네요...

    로컬 디스크처럼 사용하면서 링크는 네트워크 주소로 사용하려면 다른 방법(레지스트리 설정)이 있을까요?
    (예를 들어 넷드라이브 설치하면 분명 네트워크 기반 드라이브인데 로컬 드라이브로 잡히는..)

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com