Windows 구성을위한 버전 제어


8

Windows 개인 구성을 버전 제어 하에 두려면 어떻게 합니까?

요약 (세부 사항과 예는 다음과 같습니다) :

  • 시스템 구성 (예 : 드라이버)이 아닌 개인 구성 (예 : 데스크탑 환경 설정) 관리자 권한없이 작동해야합니다
  • 백업 또는 디스크 이미징이 아닌 버전 제어

몇 가지 할 수있는 작업은 다음과 같습니다.

  • 구성의 현재 상태를 저장소에 커밋하십시오. 가급적이면 세분화하십시오 (두 가지 변경을 한 경우 다른 커밋하지 않고 하나를 커밋 할 수 있기를 원합니다).
  • 커밋 할 때마다 변경 로그 항목을 작성하고 각 구성 파일의 변경 로그 항목 목록을 확인하십시오.
  • 현재 상태와 저장소 버전의 차이점을 확인하십시오.
  • 새 Windows 시스템의 저장소에서 체크 아웃하고 구성을 재현하십시오 (적어도 새 시스템의 Windows 버전이 동일한 경우).

<added1> “구성”에 대한 정확한 정의를 제공하지는 않겠습니다. 모든 종류의 개인 취향 (예 : 관리자 권한없이 제어판에서 설정할 수있는 항목, 사용자 별 "프로그램"메뉴의 바로 가기 등) 을 다루려고합니다 . 문서 나 설치된 응용 프로그램을 포함하고 싶지 않습니다. </ added1>

<added2> 시스템 구성이 아니라 개인 구성을 대상으로합니다 (유용하지만이 질문의 목적은 아님). 예를 들어 솔루션이 관리자 권한없이 작동 할 것으로 기대합니다. </ added1>

유닉스에서 내가하는 일은 버전 제어하에도트 파일을 선택하는 것입니다 . Windows에서는 레지스트리와 일부 파일 (어떤?)을 커밋해야한다고 가정합니다 Application Data. 전체 레지스트리 파일을 버전 제어하에 두는 것보다 더 나은 것을 원합니다 (충분한 수준이 아니기 때문에 잠금 문제가 걱정됩니다). <added1> 이상적인 버전 관리 소프트웨어 (Bazaar, CVS, Darcs, Git, Mercurial, Subversion 등)와 함께 래퍼 또는 스크립트를 사용하는 것이 이상적이지만 반드시 필요한 것은 아닙니다. </ added1>

현재 Windows 2000 및 Windows XP에서 작업해야합니다. 이것은 작업 기계를위한 것이기 때문에 페이웨어는하지 않을 것입니다 (오픈 소스가 이상적입니다). GUI보다 명령 줄에 더 익숙합니다.

<added1> 다음은 샘플 워크 플로우입니다.

  • 어느 날 나는 데스크탑 배경이 분홍색이되기를 원한다. GUI를 통해 변경합니다. 레지스트리 의 구성 파일행을 수정합니다 . 그런 다음 변경 내용을 추적하기 위해 변경 내용을 커밋합니다.
  • 나중에 데스크탑 배경이 분홍색 인 이유가 궁금합니다. 변경 로그에서 "데스크톱 색상"을 검색합니다.
  • 어느 날 나는 새로운 기계를 사용해야합니다. 구성 저장소와 분홍색 바탕 화면을 확인하십시오.

내가하려고하지 않은 몇 가지 사항은 다음과 같습니다.

  • 백업을 시도하지 않습니다. 변경 사항 (시맨틱 또는 적어도 날짜 별 구문이 아닌 구문)을 추적하고 컴퓨터 (하나의 저장소, 여러 체크 아웃)간에 정보를 공유하고 싶습니다.

  • Windows 설치를 복제하려고하지 않습니다. 하드웨어 종속성, 설치된 응용 프로그램 또는 문서를 옮기고 싶지 않습니다.

</ added1>


4
이것의 최종 목표는 무엇입니까? 앱을 리버스 엔지니어링하려고합니까? 내가 묻는 이유는 다른 것에 대한 보고서가 없기 때문에 동결 건조 상태를 유지하는 것이 쉽다는 것입니다. 변경 사항을 보는 것조차 어렵지 않지만 버전 관리를 확인하지는 않습니다. 나는 당신이 성취하고자하는 것에 대해 더 많은 이해를 원하고 다른 접근법을 제안 할 수 있습니다.
Scott McClenning

@Scott에 동의하면 이것이 매우 실용적이지 않습니다 (또는 그 문제에 대해서는 가능할 수도 있습니다). 달성하려는 것에 대한 자세한 내용은 훌륭합니다.
Sasha Chedygov

1
+1 ... 당신은 이것에 대해 거의 확실하게 잘못 가고 있습니다.
Zac Thompson

@ 스콧 : 내 목표는 내 Windows 사용자 지정에 버전 관리를 사용하는 것입니다. 나는 왜 내 질문이 당신에게 리버스 엔지니어링을 제안하는지 전혀 모른다. @ Zac : 첫 번째 단계를 수행하지 않았 으므로이 방법에 대해 잘못 갈 수 없습니다.
Gilles 'SO- 악마 그만'

그것은 당신의 목표가 시스템에서 무언가를 한 다음에 무슨 일이 일어 났는지 보는 것 같았습니다. 나중에 구성으로 복원해야하는 경우 일부 가상 머신 소프트웨어를 사용하여 스냅 샷을 작성합니다. 그것은 당신에게 무슨 일이 있었는지 알려주지 않지만 반복해서 같은 장소로 당신을 데려 갈 것입니다. 응용 프로그램의 기능을 보려면 설치 전후의 시스템을 수행하여 msi 파일을 만드는 프로그램이 있습니다. 그런 다음 msi 내부를 살펴보고 앱이 터치 / 변경된 내용을 확인할 수 있습니다. 그러나 이들 중 어느 것도 "버전 제어"가 아닙니다.
Scott McClenning

답변:


9

내가 아는 한, Windows 구성이 너무 흩어져서 레지스트리에있는 파일과 위치가 너무 많아서 안정적으로 백업 할 수 없습니다.

너무 많은 키가 시스템에 고유하고 일부 키가 Windows에 의해 보호되어 있기 때문에 한 시스템에서 레지스트리를 백업하고 다른 시스템 (또는 동일한 시스템)에서 레지스트리를 복원하는 것은 불가능합니다.

시스템 복원은 머신 상태를 유지하는 것을 목표로하지만 공간 절약을 위해 삭제할 백업을 결정하고 Windows 2000에서 사용할 수없는 것과 같은 다른 부정적인 문제가 있기 때문에 신뢰할 수 없습니다.

내가 볼 수있는 유일한 범용 솔루션은 디스크 이미징 제품을 사용하여 시스템 디스크 전체를 이미지화하고 필요할 때 복원하는 것입니다.

매우 우수한 품질의 디스크 이미징 제품이 여러 가지 있는데,이 솔루션이 관심이 있다면 권장 할 수 있습니다. 그들 중 일부는 설명이 담긴 이미지 저장소를 유지합니다. 최고의 것은 상업적이지만 프리웨어는 여전히 매우 좋습니다.

디스크 이미징은 시스템 드라이브에 사용자 데이터가없는 경우 가장 잘 작동합니다.


1
+1 동의합니다. Disk-Imaging의 기능을 볼 수 없지만 DriveImage ( runtime.org/driveimage-xml.htm )를 사용하면 안정적인 기술을 사용하여 시스템을 사용하면서 디스크를 백업 할 수 있습니다. 또한 파일을 탐색 할 수 있습니다
Cristian T

디스크 이미징 제품을 사용하는 대신 VM을 사용하고 스냅 샷을 만드는 것이 더 간단 할 수 있습니다. 하드웨어가 동일하지 않은 경우 컴퓨터간에 마이그레이션하는 것이 훨씬 간단합니다.
Velociraptors

@ harrymc : 초기 공식이 처음으로 명확하지 않은 경우 죄송합니다 (내가 의미하는 바를 이해하기 위해 유닉스 배경이 필요하다고 생각합니다).하지만 시스템 구성이 아닌 사용자 구성을 백업하려고합니다. .
Gilles 'SO- 악마 그만'

1
사용자 구성에서 요소 목록을 상당히 좁힐 수 없다면 대답은 여전히 ​​동일합니다. Linux 도트 디렉토리와 달리 Windows에는 실제 "사용자 구성"영역이 없습니다. 사용자 레지스트리 하이브가 존재하지만 많은 사용자 정보가 다른 위치와 디스크 전체에 "프로그램 파일", "사용자"등으로 흩어져 있습니다. Windows 자체가 많은 지옥을 수정하기 때문에 레지스트리 변경 사항을 모니터링 할 수도 없습니다. 작업하는 동안 그리고 모든 응용 프로그램은 자체 규칙을 발명합니다. 리눅스가 더 효율적인 이유가있다.
harrymc

Windows 사용자는 개요와 같은 메커니즘을 원했습니다. 아아, 그것은 불가능하다. 데이터가 저장된 위치를 찾으려면 프로세스 모니터를 사용하여 모든 응용 프로그램 및 변경 종류를 추적해야합니다. 이것은 엄청난 시간의 투자를 요구하는 거대한 프로젝트입니다.
harrymc

2

펜스의 서버 측에서 나오면 구성 변경과 그 위치에 대해 매우 편집증 적이라고 생각할 수 있습니다. 실제로 존재하지 않는다고 말할 수 있습니다. 전역 설정 추적은 대부분 전적으로 수동 프로세스입니다. 변경 사항에 대해 특정 레지스트리 영역 을 모니터링 할 수는 있지만 막을 수는 없지만, 고가의 소프트웨어 패키지와 값 비싼 패키지를 허용하는 무료 / 저렴한 소프트웨어 패키지는 없습니다. 텍스트 파일; 따라서 비싸다).

이것은 유닉스 관리자 배트를 운전합니다. StackOverflow Inc의 sysadmin 인 Kyle Brandt 는 몇 주 전에 StackExchange를위한 새로운 Windows 시스템 배치를 준비하면서 이러한 종류의 문제를 해결하고있었습니다. Linux / Windows 크로스 오버 SysAdmins는 모두 그와 함께 제공되었습니다. VCS에 / etc를 넣는 것과 같은 Windows는 없습니다. 디스크 이미징 / 스냅 샷 또는 그룹 정책을 통한 구성 변경 강제 (및 수동으로 GPO 변경 추적)와 같은 추악한 문제가 있지만 그다지 우아하지는 않습니다.

죄송합니다.


2

개인적으로 Regshot을 사용 하여 Windows 레지스트리의 변경 사항을 추적 합니다. 변경하기 전에 스냅 샷을 찍은 다음 다시 한 번 생성합니다. 변경 사항에 대한 멋진 HTML 보고서를 얻을 수도 있습니다. 물론 모든 변경 사항이 무엇인지 파악하려면 스냅 샷간에 몇 가지 변경 사항 만 수행해야합니다. Regshot은 오픈 소스 프로그램입니다.

파일 시스템 변경 사항 추적 / 백업을 찾고 있다면 DocShield 일 것입니다 . 응용 프로그램 데이터는 대부분의 Windows 사용자 프로필 인식 소프트웨어의 개인 환경 설정 변경에 가장 적합한 추측이지만 폴더를 사용하여 모든 폴더를 추적 할 수 있습니다. DocShield는 가정 사용자에게는 무료입니다. xcopy /d:{m-d-y}필요한 폴더를 사용하여 수행 한 작업을 모방 한 다음 출력을 zip / 7z 할 수 있습니다.

그런 다음 두 백업의 출력을 모든 버전 제어 저장소에 추가하십시오.


HTML 보고서에 신경 쓰지 않는다면 Regshot은 Microsoft reg.exe와 Cygwin 이하 지 regtool않는 일을 무엇입니까? DocShield의 경우, 버전 관리 소프트웨어가 더 나아지지 않게하려면 어떻게해야합니까?
Gilles 'SO- 악마 그만'

Regshot에게 현상금이 수여됩니다. 나는 그것이 내가 정말로 원하는 것이라고 생각하지 않지만, 내가 구축 할 수있는 좋은 시작입니다 (특히 오픈 소스가 주어진 경우).
Gilles 'SO- 악마 그만'

나는 내 것이 당신이 찾고있는 것 이상이라고 생각합니다 ...하지만 현상금이 당신에게 알리기를 원했기 때문이 아닙니다.
jer.salamon

1

간단하지는 않지만 Sysinternals Process Monitor를 사용하여 변경된 파일 및 레지스트리 설정을 확인할 수 있습니다. 그런 다음 레지스트리 편집 및 업데이트 된 파일을 더 큰 프로그램에 추가하여 변경할 수 있습니다. Power Shell 또는 AutoIt과 같은 것을 사용할 수 있습니다. 그런 다음 결과 스크립트를 vc로 확인하십시오. 이상한 설정을 로그온 스크립트 및 사용자 지정 그룹 정책 관리 템플릿으로 자동화하는 데 비슷한 방법을 사용합니다.


내가 당신을 올바르게 이해한다면, 당신은 기본적으로 전체 레지스트리와 Application Data내용 대신 내 변화에 의해 유발 된 차이 만 유지하도록 제안하고 있습니까? 어떤 이유로 모니터 프로그램이 실행되고 있지 않을 때의 변경 사항을 어떻게 감지합니까? 업데이트 작업을 수행 할 수 있도록 워크 플로를 확장 할 수있는 합리적인 방법이 있습니까 (예 : 이미 체크 아웃을 수행했으며 다른 컴퓨터에서 변경 한 사항을 몇 개 더 적용하고 싶습니까)?
Gilles 'SO- 악마 그만'

1

귀하를위한 OS 솔루션이 없지만 유료입니다. 할 수있는 일은 DriveImage XML을 사용하여 드라이브를 백업하는 것입니다

백업 형식은 XML입니다. 그런 다음이 xml 파일 (차이도 가능)을 선호하는 Version Control System에 저장할 수 있습니다.

으로 HarryMC는 말했다, 당신은 정말 새로운 시스템을 변경하기 위해이 이미지를 사용할 수 있지만, 당신은 확실히 정확히 같은 하드웨어와 새로운 시스템에 이미지를 사용할 수 있습니다.


1

ForensiT의 프로필 관리 소프트웨어를 사용하여 창 상자를 끄고 전체 프로필을 복사 할 수 있습니다. 확인하려면 여기로 이동하십시오 : User Profile Manager


이 프로그램이 어떻게 도움이되는지 모르겠습니다. 프로필을 여러 컴퓨터에 배포하는 것처럼 보였습니다. 이것은 저의 주요 관심사가 아닙니다 (관리 기록). 관리자에게는 유용한 도구 일 수 있지만 여기서는 사용자입니다.
Gilles 'SO- 악마 그만해

사용자 프로파일을 백업하고 선택시 복원 할 수 있습니다. 당신이 찾고있는 것이 아닌가요?
jer.salamon

-2

레지스트리 키를 추적하고 태그로 색인을 생성하는 데이터베이스 응용 프로그램을 설명하고있는 것 같습니다. 이 작업을 수행하는 데 레지스트리 키가 충분하지는 않지만 귀하의 예에서는 데이터베이스에서 Pink Desk top을 검색하고 다른 컴퓨터에서 해당 변경 사항을 구현하는 지침을 얻고 싶습니다. 즉, 당신의 의도를 이해한다면

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.