예전에 어떤 분이 이 질문을 했었는데요, 어제 자식 VHD 파일 2개 운용하기 글을 포스팅하고나서 생각이 났습니다. 가만히 생각해보니 파일 교체시 굳이 스크립트 2개를 따로 만들 필요가 없습니다. IF ERRORLEVEL과 &를 사용하면 깔끔하게 2줄로 끝낼 수 있습니다.

일단 이 글을 이해하려면 어제 포스팅했던 글을 먼저 이해하셔야 합니다.
2010/09/02 - [Windows 7] - VHD 파일 교체하기 귀찮다면 자식 2개를 운용해보자


한방에 처리하는 스크립트는 대충 이렇습니다.

@echo off
pushd %~dp0
bcdedit /default {78f20410-b0eb-11df-aa6f-e3d504a75150} & copy clean.vhd child1.vhd
if errorlevel 1 bcdedit /default {78f20411-b0eb-11df-aa6f-e3d504a75150} & copy clean.vhd child2.vhd
shutdown /r /t 0
exit

먼저 1번 자식파일을 기본 부팅메뉴로 설정하고, 1번 자식파일 교체를 시도합니다.
이때 교체 작업에서 에러가 발생하면 (현재 1번 자식으로 부팅된 상태라면)
2번 자식파일을 기본 부팅메뉴로 설정하고, 2번 자식파일을 교체합니다.
만약 1번 교체 작업에서 에러가 발생하지 않으면 그대로 1번 자식만 교체되고 바로 Shutdown 명령어로 넘어갑니다. IF ERRORLEVEL 구문은 이렇게 유용하게 쓰일 수 있습니다.

위 예제처럼 구성해두면 파일 클릭시 알아서 현재 사용중이 아닌 자식을 교체하고 그걸로 부팅하게 됩니다. 그렇다면 이 스크립트를 시작프로그램에 등록시켜서 윈도우 진입시 항상 자동으로 교체 작업을 실행하도록 처리해두면 되겠죠? 이렇게 해두면 PC방이나 대학교에서 사용하는 순간 복구 프로그램처럼 매 부팅시 항상 깨끗한 상태로 복원된 윈도우를 사용할 수 있습니다. 게다가 이건 복구 프로그램과 다르게 단순히 파일만 교체하는 작업이니 윈도우 시작시 0.1초도 안 걸립니다. 복구를 위한 시간이 소요되지 않는다는게 큰 매력입니다.

단점이 있다면 프로그램 설치시 재부팅을 요구하는 경우 재부팅 후 멀티부팅 메뉴에서 수동으로 선택을 해줘야 한다는 것입니다. 이미 윈도우 시작시 다른 자식 메뉴가 기본 부팅메뉴로 지정되어 있기 때문입니다. 또한 UAC를 끄고 사용하거나 관리자 계정으로 사용하시는 분들만 이렇게 구성할 수 있습니다. 만약 UAC를 켜고 사용하시는 분들이라면 이 스크립트를 관리자 권한으로 실행하도록 지정을 해야하는데 그러면 매번 윈도우 부팅시 처음에 UAC 확인 창이 뜨기 때문에 귀찮게 됩니다.

사실 이렇게 구성해서 사용하실 분들은 별로 없을 것 같지만 지난번에 질문을 받았기 때문에 혹시나 필요한 분들 계실까봐 소개해드리는 것입니다. 회사에서 공용으로 사용하는 PC에 Diff VHD를 자식 2개로 생성해서 이렇게 시작메뉴에 등록시켜두면 매번 깨끗한 윈도우 상태를 유지할 수 있으니 시스템을 관리하시는 분들에겐 매우 편리한 솔루션이 되겠지요. 따로 프로그램을 사용하는게 아니기 때문에 윈도우가 꼬일 걱정도 없고 MBR 문제나 라이선스 걱정도 없습니다. VHD와 윈도우 커맨드 만으로 모든 작업을 처리하기 때문입니다.


그렇다면 시작프로그램에 등록하기 위한 스크립트는 어떻게 구성해야 할까요? 위 스크립트에서 약간만 바꾸면 됩니다.

@echo off
pushd d:\vhd
bcdedit /default {78f20410-b0eb-11df-aa6f-e3d504a75150} & copy clean.vhd child1.vhd
if errorlevel 1 bcdedit /default {78f20411-b0eb-11df-aa6f-e3d504a75150} & copy clean.vhd child2.vhd
exit

pushd d:\vhd 부분은 VHD 파일을 모아놓은 경로로 커맨드 위치를 이동시키는 것입니다.
shutdown 명령어는 당연히 빼야겠지요. 안 빼면 윈도우 시작하자마자 강제로 재부팅 되니까요. 

이렇게 만들어서 메모장에 넣은 다음 확장자 CMD로 저장해서 시작프로그램 폴더에 넣습니다. 시작프로그램 폴더는 윈도우 탐색기 주소창에 아래 경로를 복사해서 붙여넣으세요.

%AppData%\Microsoft\Windows\Start Menu\Programs\Startup

위 폴더에 교체하기 파일을 넣어주시면 됩니다.



물론 이 파일을 시작프로그램에 넣는 작업은 당연히 부모 VHD로 부팅한 상태에서 해야겠지요? 그래야 자식들한테 늘 적용되니까요. 그리고 이렇게 등록해두면 가끔 업데이트나 설정 변경을 위해 부모 VHD로 부팅한 경우에도 설정을 마치고 재부팅 하면 이미 1번 자식은 교체되어 있고 1번 자식으로 자동 부팅되기 때문에 부모 파일을 업데이트한 후 깜빡하고 자식 VHD를 교체하지 않아서 블루스크린을 보게될 일도 없어집니다.


어차피 자동교체로 사용하실 분들은 거의 없을 것 같은데 괜히 저혼자 열심히 설명했네요. 굳이 시스템 시작시 자동교체하는 방법은 사용하지 않는다 하더라도 제일 처음에 소개해드린 방식으로 스크립트를 만들면 현재 어떤 자식으로 부팅했는지 확인해볼 필요 없이 파일 하나로 처리가 되기 때문에 어제 포스팅했던 글보다 좀 더 편리해졌다고 생각합니다.
신고

  1. 이전 댓글 더보기
  2. 슈진
    2010.10.23 11:59 신고

    질문이.. 굳이 깨끗한 자식으로 옮겨가는데 그 자식을 다시 깨끗하게 만들어서 갈 필요가 있냐는 거였습니다 ㅎㅎ
    그러니까 1에서 2로 옮겨갔다고 할때 1은 어짜피 깨끗한 파일이라 clean을 복사할 필요가 없지 않냐는 건데요... 그리고 2로 부팅됬을 때 1은 용량이 늘어나 있다는 뜻이구요

  3. ZUNE
    2010.10.27 01:10 신고

    이걸 하면 부팅 메뉴는 어떤식으로 표시가 되는지 매우 궁금해 지네요.
    제가 초보라 그런지 부팅 메뉴가 어떤식으로 뜨는지 알면 조금 이해하기 쉬울 것 같습니다.
    그럼 수고하세요.^^;

    • BlogIcon snpbox
      2010.10.27 16:52 신고
      수정 및 삭제

      부팅 메뉴는 이것과 관련이 없죠. 이것을 적용하기 전에 부팅 메뉴를 먼저 만들어야 합니다. 이 글은 그 부팅 메뉴를 다음 부팅시 자동으로 변경하도록 설정하는 것이구요. 물론 윈도우 진입시 상대편 자식 VHD를 깨끗한 것으로 되돌리는 내용도 포함되어 있습니다.

  4. 니로스
    2010.10.28 22:12 신고

    얼마전부터 컴터가 이상해지더니 어젠 백업한다고 고작 20G 하드 복사하는데 1시간이 걸리는군요
    저도 성공~
    여러가지 게시글을 조합해서 만드느라 시간은 제법 걸렸지만 이제 재설치 안해도 되겠어요..ㅠ
    부모파일 업데이트 후 적용이 왜 안되나 했더니
    자식파일을 다시 초기파일로 바꿔주어야 하는걸 이제 안;;;

    새로 교체후 파일을 읽어오면 그 전보다는 약간 더딘감이 있는데,
    그래서 SSD 지름신이 오는가 봅니다......~_~ㅋㅋ

    항상 좋은 정보 감사드립니다~

  5. 이학수
    2010.11.15 23:36 신고

    저는 왜 안될까요
    처음 깨끗한 상태로 VHD를 만들고 백신설치하고 만들고 자식 하나더 만들어서 그걸로 부팅하고
    데몬을 깔았다가 마지막 만든 VHD를 삭제 했는데 왜 데몬은 시작 메뉴에 그대로 있을까요

  6. BlogIcon Mistilteinn_KOR
    2010.12.05 00:08 신고

    어차피 자동교체로 사용하실 분들은 거의 없을 것 같은데 괜히 저혼자 열심히 설명했네요. by snoopy
    거의 없을분 말고 사용하실 분에 포함되는 1人 감사합니다.
    자식 2개 운용해야겠네요 ㅋㅋ;

  7. 스누피님광팬^^
    2011.02.08 21:59 신고

    스누피님~ 힘내시구요 ^^
    소리 소문없이(?) 지켜보시는 분들이 더 많으실겁니다.
    항상 좋은 포스팅 공유 감사합니다.

  8. 술곰
    2011.03.07 12:16 신고

    스누피님 덕에 VHD를 이용하여 잘 사용하고 있습니다.~ ㅎㅎㅎ

    하나 의문점이 생겨서요..부모로 부팅해서 새로운 업데이트를 해주고 난뒤에

    PE로 부팅해서 새로 클린을 만들고 자식을 만들어서 사용해야 대나요?

    • BlogIcon hongyang
      2011.03.07 20:22 신고
      수정 및 삭제

      네. 업데이트를 하셨으면 VHD 교체를 하시던지 자식을 만드세요. 그런데 새로 클린을 만드는 것은 필요 없어요.

  9. 구름따라
    2011.03.20 21:23 신고

    첫번째 스크립트를 사용할려는데요 그럼 부팅 메뉴 순서는 자식1번 사용할때는 1번을 1st로 자식 2번 사용중일때는 2번을 1st로 해야 되는지가 제일 궁금합니다.
    즉, 자식들을 바꿀때마다 순서를 다시 정해줘야하는지요?
    지금 전 부모,pe,자식1,2를 부팅메뉴에 등록 중입니다.

  10. 구름따라
    2011.03.20 23:31 신고

    자문자답이네요 ;; 자동으로 부팅 순서가 1st로 되네요...감사합니다...많은 공부가 되었습니다.

  11. 나그네
    2011.03.25 00:16 신고

    유익한 정보 정말 감사합니다. (__) 항상 글 잘 읽고 있습니다.

  12. 소행성
    2011.04.19 14:29 신고

    매우 유용한 정보네요!! 감사합니다.

  13. 미치겠
    2011.05.29 19:45 신고

    안녕하세요
    오늘 vhd설정을 완벽히 다 끝내고 여기까지왔습니다.
    스크립트도 완성하구요 스크립트 완성은 부모 vhd에서 만들고 시작프로그램에 집어넣고 더블클릭을 했습니다.물론 스크립트대로 하니까 자동으로 리부팅은 안되지요.
    리부팅을 하고나서는 완성적이였습니다.
    하지만 실험삼아 해보려고 부모 vhd에있는 파일하나를 지우고 자식vhd로 시작을 하니 블루스크린이 뜨더군요 자식1.2.부모 모두 블루스크린이 떠버렸습니다..ㅠㅠ
    이럴경우는 원래대로라면 설정이나 적용할내용을 부모vhd에서 설정완료후 pe모드에서 자식vhd를 지우고 다시 생성하여 부팅메뉴에 등록후 사용해야하는겁니까??
    만약 설치가아닌 단순히 파일하나를 부모vhd에서 지울일이 생기더라도 이런과정을 거쳐야 하는건가요??답변 부탁드리겠습니다

  14. 홍이아빠
    2011.08.15 23:49 신고

    vhd의 세계는 정말 대단한거 같습니다. 스누피님 고맙습니다.

  15. 입문자
    2011.09.02 22:38 신고

    vhd를 사용하고잇는데요 부모vhd의 업뎃 내용을 자식들에게 적용하려면 어떻게해야 하는지 잘 모르겠어요;; 스누피님 글 다 읽어봐도 잘 모르겠어서 이렇게 댓글로 문의드립니다. 저는 현재 1tb 하드에 윈7을 부모vhd에 설치해서 자식1 자식2 깨끗한vhd 이렇게 구성하고 있습니다. 부모vhd의 업뎃된 내용들을 자식들에게 적용하려면 어떻게 해야하는지요?

    • BlogIcon 노라스
      2012.02.06 14:21 신고
      수정 및 삭제

      Parent VHD 의 update 를 Child VHD 에도 적용시키려면
      초기에 생성한 순수 Clean VHD를 Child VHD에 덮어씌우면 됩니다.

      이해가 잘 안가시면 VHD 포스트 처음부터 정독 3~4번
      하시고 공책에 그려보시면 이해가 가실 거에요.

  16. vhd 복구
    2011.10.11 20:53 신고

    vhd 파일을 사용하다가 하드가 에러났습니다. (전원이 갑자기 꺼졌다가 다시 켜졌는데 블루스크린이 뜨네요 ㅠㅠ) 간신히 하드를 다른 곳에 붙여서 d드라이브에 이전에 복사해놓았던 vhd 파일을 c드라이브로 옮겼습니다. 기존에 c드라이브에 있었던 vhd파일은 파일명만 바꾸어놓았고요.
    이전에 사용하던 vhd 파일에서 바탕화면에 깔려 있던 파일들을 가지고 올 수 있는 방법이 있을까요?

  17. 꼬마눈사람
    2011.10.21 21:53 신고

    사흘쯤 snoopybox 님의 블로그를 읽고 읽고 또읽었더니
    VHD 길이 보이기 시작했습니다.
    감사합니다. ^^;;;

  18. 까만콩
    2012.03.11 18:52 신고

    휴일날 하루종일 맘먹고 snoopy님 블로그를 보며 VHD에 대해 study(?)했습니다. 컴퓨터가 4개인지라 관리하는게 늘 골치였는데 이제 더이상 포맷하는 일은 없을 것 같습니다.^^; 감사합니다.

  19. Ougon
    2012.03.19 01:26 신고

    와! 아름다울 정도로 완벽한 방법이군요.

    감탄하고 갑니다.

  20. Ougon
    2012.03.19 01:30 신고

    100kb 정도의 클린 vhd파일은 '태아'라고 부르면 어떨까 합니다.
    부모의 변경내용을 이어받되 태어난(1회 부팅된) 이후로는 별개의 개체로써 커간다는 의미를 담아서요

  21. pys
    2012.12.03 20:15 신고

    윈도우즈8도 differencing코드가 될까요?

    매번 부팅때마다 같은 자식만 부팅되던데... 방법이없을까요?