본문 바로가기

디스크와 파티션

특정 폴더를 드라이브로 인식시키는 방법(가상 드라이브) - Subst, 레지스트리

자주 사용하는 폴더를 드라이브로 지정하기 - 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)



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

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


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