8

Как я могу поставить свою личную конфигурацию Windows под контроль версий?

Резюме (подробности и примеры приведены ниже):

  • Персональная конфигурация (например, настройки рабочего стола), а не конфигурация системы (например, драйверы); должен работать без прав администратора
  • Контроль версий, а не резервное копирование или создание образа диска

Вот несколько вещей, которые я хочу сделать:

  • Зафиксируйте текущее состояние моей конфигурации в хранилище, желательно с некоторой детализацией (если бы я сделал два изменения, я бы хотел иметь возможность зафиксировать одно без фиксации другого).
  • Напишите запись журнала изменений каждый раз, когда я фиксирую, и просмотрите список записей журнала изменений для каждого файла конфигурации.
  • Смотрите различия между текущим состоянием и версией репозитория.
  • Проверьте из моего репозитория на новой машине Windows и воспроизведите мою конфигурацию (по крайней мере, если новая машина имеет ту же версию Windows).

<добавленный1> я не буду пытаться дать полностью точное определение "конфигурации"; Я пытаюсь охватить все виды личных предпочтений (например, что-либо настраиваемое в панели управления без прав администратора, ярлыки в моем меню «Программы», специфичные для пользователя,…). Я не хочу включать свои документы или установленные приложения. </ Added1>

<добавлено2> Обратите внимание, что я нацеливаюсь на мою личную конфигурацию, а не на конфигурацию системы (это также было бы полезно, но цель этого вопроса не в этом). Например, я ожидаю, что решение будет работать без прав администратора. </ Added1>

Что я делаю в Unix - это помещаю (выборочно) мои точечные файлы под контроль версий. Под Windows я предполагаю, что должен зафиксировать реестр и некоторые файлы (какие?) под Application Data . Я хотел бы что-то лучше, чем поставить весь файл реестра под контроль версий (этого недостаточно, и я боюсь проблем с блокировкой). <добавленный1> В идеале я хотел бы использовать оболочки или сценарии с некоторыми распространенными программами контроля версий (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...), но это не является абсолютным требованием. </added1>

В настоящее время мне нужно работать с Windows 2000 и Windows XP. Так как это для рабочей машины, платное программное обеспечение не подойдет (с открытым исходным кодом было бы идеально). Мне удобнее работать с командной строкой, чем с графическим интерфейсом.

<добавлен1> Вот пример рабочего процесса:

  • Однажды я решил, что хочу, чтобы фон моего рабочего стола был розовым. Поэтому я делаю изменения через графический интерфейс. Это изменяет строку в ключе файла конфигурации в реестре. Затем я фиксирую изменения, чтобы отследить их.
  • Позже я удивляюсь, почему фон моего рабочего стола розовый. Поэтому я ищу «цвет рабочего стола» в журнале изменений.
  • Однажды мне нужно использовать новую машину. Поэтому я проверяю из своего хранилища настроек и вуаля, розовый рабочий стол.

Вот некоторые вещи, которые я не пытаюсь сделать:

  • Я не пытаюсь делать резервные копии. Я хочу иметь возможность отслеживать изменения (по семантике или, по крайней мере, по синтаксису, а не только по дате) и обмениваться информацией между машинами (один репозиторий, несколько проверок).

  • Я не пытаюсь повторить установку Windows. Я не хочу переносить аппаратные зависимости, установленные приложения или документы.

</ Added1>

7 ответов7

9

Насколько я знаю, конфигурация Windows слишком разбросана для надежного резервного копирования среди слишком большого количества файлов и мест в реестре.

Невозможно сделать резервную копию реестра на одном компьютере и восстановить его на другом (или даже на одном и том же), потому что слишком много ключей слишком специфично для компьютера и потому что некоторые ключи защищены Windows.

Восстановление системы нацелено на поддержание состояния компьютера, но для вашей цели это ненадежно, так как он сам решает, какие резервные копии удалять, чтобы сэкономить место, и имеет другие негативные проблемы, такие как недоступность в Windows 2000.

Единственное универсальное решение, которое я вижу, состоит в том, чтобы полностью создать образ системного диска и при необходимости восстановить его, используя продукт для создания образа диска.

Существует несколько продуктов высокого качества для создания образов дисков, которые я могу порекомендовать, если вы обнаружите, что это решение вас интересует. Некоторые из них хранят репозиторий изображений с описательной информацией. Хотя лучшие из них являются коммерческими, бесплатные программы все еще очень хороши.

Создание образа диска лучше всего работает, когда системный диск не содержит пользовательских данных.

2

Исходя из серверной части забора, где вы ожидаете, что мы очень параноидально относимся к изменениям конфигурации и откуда они пришли, я могу сказать, что они на самом деле не существуют. Глобальное отслеживание конфигурации - это по большей части полностью ручной процесс. Можно отслеживать (но не предотвращать) определенные области реестра на предмет изменений, но я не знаю ни одного бесплатного / дешевого программного пакета, который бы позволял это, и нескольких очень дорогих (это гораздо более сложная проблема, чем отслеживание информации о файле и последующее различие двух текстовые файлы, таким образом, дорого).

Это приводит в действие юнитов Unix. Кайл Брандт, системный администратор StackOverflow Inc, пару недель назад рассказывал о подобных вещах, когда готовил новую партию компьютеров под Windows для StackExchange. Кроссовер Linux/Windows SysAdmins все сочувствовал ему. В Windows просто нет эквивалента для размещения /etc под VCS. Есть некоторые уродливые ошибки, такие как создание образа / моментальный снимок диска или только принудительное изменение конфигурации с помощью групповых политик (и отслеживание изменений в объектах групповой политики вручную), но это не так элегантно.

Сожалею.

2

Лично я отслеживаю изменения в реестре Windows с помощью Regshot. Вы делаете снимок до изменения, а затем второй после его внесения. Вы также можете получить хороший HTML-отчет об изменениях. Конечно, вы должны убедиться, что между моментальными снимками сделано только несколько изменений, если вы хотите выяснить, что делает каждое изменение. Regshot - это программа с открытым исходным кодом.

Если вы ищете отслеживание / резервное копирование изменений в файловой системе, возможно, наиболее близким будет DocShield. С его помощью вы можете отслеживать любую папку, хотя данные приложения, вероятно, являются вашим лучшим предположением об изменениях ваших личных предпочтений в большинстве программ, использующих профили пользователей Windows. DocShield бесплатен для домашних пользователей. Вы можете имитировать то, что он делает, используя xcopy /d:{m-d-y} необходимых вам папок, а затем zip / 7z вывод.

Затем добавьте выходные данные из обеих резервных копий в любое хранилище управления версиями со своими замечаниями.

1

Это будет непросто, но вы можете использовать Sysinternals Process Monitor, чтобы определить, какие файлы и параметры реестра были изменены. Затем вы можете добавить изменения реестра и обновленные файлы в большую программу, которая внесет изменения за вас. Возможно, вы могли бы использовать Power Shell или что-то вроде AutoIt. Затем проверьте полученный скрипт в вашем vcs. Я использую аналогичный метод для автоматизации странных настроек в сценариях входа и пользовательских шаблонах администрирования групповой политики.

1

Вы можете использовать программное обеспечение для управления профилями ForensiT, чтобы скопировать весь ваш профиль с настройкой окна. Зайдите сюда, чтобы проверить это: User Profile Manager

1

У меня нет решения для ОС, но есть платная возможность. Что вы можете сделать, это сделать резервную копию вашего диска с помощью DriveImage XML

Формат резервной копии - XML. Затем вы можете сохранить этот XML-файл (также возможны различия) в вашей любимой системе контроля версий.

Как сказал HarryMC , вы не можете использовать этот образ для внесения изменений в новую систему, но вы точно можете использовать этот образ на новой системе с точно таким же оборудованием.

-2

Мне кажется, вы описываете приложение базы данных, в котором вы отслеживаете ключи реестра и индексируете их по тегу. Хотя я недостаточно разбираюсь в ключах реестра, чтобы сделать это, в вашем примере вы хотите найти в базе данных Pink Desk top и получить инструкцию, которая будет реализовывать это изменение на другом компьютере. То есть если я понимаю твои намерения

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .