출처 : http://tong.nate.com/hitong_tong/47896136


비스타(vista)에서 낭비된 용량 되돌려받기 (winsxs 폴더)
2008.12.19 16:37
http://tong.nate.com/hitong_tong/47896136
우선 WinSxS라는건 간단히 말해, dll을 버전 별로 몽창 모아두는 곳으로, 원하는 버전의 dll을 얻어 쓸수 있도록 하기 위해 xp부터 도입된 개념이란다. 자세한 것은 다음 링크를 참조...

아무튼, 이 디렉토리는 비스타에서 꽤나 골칫거리가 될수 있는데, 나처럼 os 파티션을 작게 잡고 사용하는 사용하는 사람에게 특히나 그렇다. xp를 사용하는 집에서는 10GB를 잡고 사용해도 여유가 반절이나 되는데, 비스타(Enterprise)를 사용하는 회사에서는 같은 용량으로 잡고 쓰면 만땅을 향해 치닫게 된다.
내 경우에 거의 대부분의 어플리케이션은 다른 파티션에 설치하기때문에, 10GB에 육박하는 용량은 거진 다 비스타에서 먹고 있는 것인데, 윈도우 업데이트를 하면서 기하급수적으로 줄어드는 디스크 용량을 추적하다가, 상당 용량을 먹고 있는 저 WinSxS란 넘의 존재를 파악하게 되었다. 내 경우 한 3GB정도 먹고 있었으며, 나중에 알아본 바, 6GB먹는다는 사람도 있고 8GB라는 사람도 있고하니 적어도 비스타에서는 GB단위로 먹는것 같다. (물론, 시간이 지날수록 계속 커질듯? -_-; 현재 사용중인 xp에서는 꼴랑 18MB 차지한다)

하여, 저 녀석을 지워버려도 될런지 구글신께 물었지만, 대답은 부정적이었다.
그러나 다행히도, 이 넘을 다른 파티션으로 옮기는 방법을 알게되어 이 곳에다 간략하게 옮겨본다.
나처럼 용량의 압박에 시달리는 분이라면 시도해봐도 좋을 것이다.

* 단, WinSxs를 옮긴 후, junction 디렉토리때문에 업데이트에 문제가 생길수도 있다
* 아래 내용을 시도함으로 인해 발생하는 어떤 피해도 글쓴이는 책임 지지 않는다

* 모든 과정은 관리자 콘솔창에서 이뤄짐을 가정한다. (UAC를 사용하는 경우에는 콘솔창을 '관리자 권한으로 실행'하면 된다)

준비물

  • MoveFile / PendMoves
    • MoveFile: 파일 이동을 다음 부팅시로 스케줄링하여 시스템 파일등을 이동할수 있게 해줌
    • PendMoves: MoveFile로 스케줄된 작업 내역을 조회

절차

  1. WinSxS 디렉토리의 소유자를 현재 로그인된 사용자로 변경하고 모든 권한을 준다
    • 소유자 변경: takeown /r /f C:\Windows\WinSxS
    • 모든 권한 부여: icacls C:\Windows\WinSxS /grant username:F /t
  2. 같은 파티션 내에 1차로 옮길 디렉토리를 만들어둔다 (다음 단계에서 링크를 만들기 위해 임시로 만드는 것임)
    • ex) C:\WINDOWS> mkdir winsxs.moved
  3. 옮길 디렉토리에 대한 링크(junction) 디렉토리를 만든다
    • ex) C:\WINDOWS> mklink /j winsxs.link winsxs.moved
  4. 2번에서 임시로 만든 디렉토리를 지운다
    • ex) C:\WINDOWS> rd winsxs.moved
  5. movefile을 이용하여 WinSxS 디렉토리 이동을 스케줄해둔다
    • ex) C:\WINDOWS> movefile winsxs winsxs.moved
  6. 다시 movefile을 이용하여 3번 단계에서 만들었던 링크 디렉토리를 WinSxS로 바꿔치기한다
    • ex) C:\WINDOWS> movefile winsxs.link winsxs
  7. pendmoves를 통해 스케줄링이 잘 돼있는지 확인해본 뒤, 재부팅
  8. 여기까지 잘 됐다면 원래 있던 WinSxS는 링크디렉토리가 되어있고 실제 파일들이 있는 원본 디렉토리를 가리키고 있을 것이다
  9. 이제, 원본 디렉토리를 원하는 다른 파티션 or 드라이브로 복사한다 (안에 있는 파일들이 사용중일 것이므로 이동은 안될것이다. 암튼 이건 탐색기로 하는게 편할듯)
  10. 링크 디렉토리를 지우고 새 위치를 가리키도록 다시 만든다
    • ex) C:\WINDOWS> mklink /j winsxs d:\winsxs
  11. 재부팅하고 링크 디렉토리가 잘 되는지 확인(들어가 보거나 dir을 해보거나..) 한다
  12. 이상 없으면, 이제 지겨운 원본 디렉토리를 지운다!
    • ex) C:\WINDOWS> rd /s/q winsxs.moved

사실, 링크와 스케줄링을 통한 간단한 방법인데 영 설명이 복잡한것 같긴 하다. 아마도 원본 디렉토리를 미리 복사해두고 파티션내에서 이동한 다음 링크 조작을 해도 무방할 것 같다.


p.s.> WinSxS 외에도 Windows\SoftwareDistribution, Windows\System32\DriverStore\FileRepository 같은 비만 디렉토리도 같은 방법으로 옮겨버릴 수 있다.


원문: http://aspoc.net/archives/2007/12/05/how-to-move-the-winsxs-directory-in-vista/

Posted by Liver Bird



출처 :

profile