USMT — лучший способ миграции информации о настройках пользователей для предприятия

Перенос данных и параметров пользователей со старой системы (Windows 95 или более поздней) на новую машину Windows XP — процесс не из легких. В частности, трудность заключается в том, чтобы собрать все ссылки, параметры и другие данные, необходимые пользователю, отбросив ненужный «хлам». Благодаря максимальной автоматизации процесса можно выполнять миграцию стабильно и эффективно.

Microsoft предлагает два инструмента, которые помогают перенести информацию о состоянии пользователей: Files and Settings Transfer Wizard (FSTW — мастер переноса файлов и параметров) и User State Migration Tool (USMT — инструмент управления миграцией настроек пользователей). Инструменты функционально похожи, но графический интерфейс FSTW менее приспособлен для массовых миграций, чем глубоко настраиваемая, управляемая сценариями утилита USMT.

FSTW

FSTW вряд ли будет полезна при переносе пользовательских параметров для большого числа компьютеров. Однако, зная возможности утилиты, ее можно задействовать для быстрой миграции, если нет времени для подготовки к работе с USMT. Сначала FSTW следует запустить на системе-источнике (старой машине), чтобы сохранить состояние системы пользователя в сети или на диске, а затем вновь запустить уже на целевом (новом) компьютере и восстановить состояние пользователя. Полный список файлов и параметров, переносимых с помощью FSTW, приведен в статье Microsoft «List of Programs Whose Settings Are Migrated When You Use the Files and Settings Transfer Wizard» (http://support.microsoft.com/?kbid=304903).

Чтобы запустить FSTW на машине XP, следует щелкнуть на кнопке Start и перейти в меню Programs, Accessories, System Tools, а затем выбрать пункт Files and Settings Transfer Wizard. FSTW спросит, нужно ли создать диск Wizard Disk с программой FSTW для исходной системы. Обратиться к программе FSTW на исходной системе можно и из установочного компакт-диска. Для этого необходимо вставить компакт-диск в накопитель, выбрать пункт Perform Additional Tasks на экране автозапуска Windows XP и запустить процедуру переноса файлов и параметров.

Простую в применении утилиту не нужно устанавливать, и настраивать сложные параметры тоже не потребуется. Она обеспечивает быстрое перемещение данных и параметров пользователей. Из интерфейса FSTW можно выбрать файлы и параметры для миграции, но настройки действуют лишь в течение одного сеанса, и в последующих сеансах миграции их приходится вводить повторно. Кроме того, FSTW уступает USMT по уровню автоматизации и глубине представления данных.

USMT

Утилита USMT была выпущена в составе комплекта ресурсов Microsoft Windows 2000 Server Resource Kit и не входит в стандартный набор инструментов XP, но ее можно найти на установочном компакт-диске XP Professional. Если USMT планируется задействовать в качестве инструмента массовой миграции, то следует загрузить файлы USMT на сетевой компьютер, чтобы автоматизировать операцию. Инсталлировать USMT не нужно, достаточно скопировать файлы из папки ValueAddMSFTUSMT на установочном компакт-диске XP Pro на общедоступный сетевой диск.

На сетевом диске должно быть достаточно места для хранения собранных пользовательских данных и параметров. В папке USMT следует создать подпапку с именем Captured, которая будет целевой для собранных файлов. Данные USMT можно хранить где угодно, но лучше все-таки собрать все ресурсы USMT в одном месте. По той же причине я рекомендую организовать общий доступ к папке USMT на сервере как к USMT; командные файлы в данной статье обращаются к разделяемому ресурсу USMT.

Файлы USMT

После того как будут скопированы файлы и создан разделяемый диск, среди множества файлов с расширениями .exe, .dll и .inf можно заметить подпапку с именем ANSI. Файлы Unicode, расположенные в первичной папке USMT, с Windows Me и Windows 9x работать не будут. Операционным системам Windows 9x необходима версия ANSI, расположенная в подпапке ANSI. Чтобы запустить корректную версию, в зависимости от используемой операционной системы следует применить командный файл, о котором будет рассказано ниже.

Для миграции используются программы scanstate.exe и loadstate.exe. Scanstate собирает и сохраняет данные и параметры пользователя исходной системы, а Loadstate восстанавливает сохраненные данные на целевой машине. В обе программы вводятся параметры, указывающие, какой .inf-файл следует обработать, где находятся собранные данные и каким образом регистрируются операции USMT. Последовательность аргументов, передаваемых программе, может достигать значительной длины, особенно если используются пути Universal Naming Convention (UNC), поэтому рекомендуется составить командные файлы с заранее определенными аргументами для каждого инструмента.

Файлы с расширением .inf управляют функционированием USMT в процессе работы Scanstate. Одни .inf-файлы настраиваются пользователем, другие изменять не рекомендуется; ни один из них не имеет названия, которое объясняло бы назначение файла. Файлы с расширением .dll в папке USMT необходимы для работы как Scanstate, так и Loadstate.

Автоматизация работы Scanstate и Loadstate

Следует помнить о нескольких правилах, связанных с функциональностью и корректным использованием USMT. Утилита USMT предназначена для миграции профилей пользователей домена, а не рабочей группы. Чтобы запустить Scanstate или командный файл с именем Scanstate, необходимо зарегистрироваться в качестве пользователя, чей профиль предполагается переместить. Программу Loadstate или командный файл, который вызывает Loadstate, следует запускать от имени пользователя с административными полномочиями на целевой системе. Пользователь, чьи данные переносятся, уже должен иметь профиль на целевом компьютере. Следовательно, не стоит запускать Loadstate от лица пользователя, чьи данные переносятся. Я рекомендую всегда запускать Scanstate от имени конечного пользователя, а Loadstate — в роли локального администратора.

Чтобы упростить миграцию множества пользователей и одновременно обеспечить целостность пересылаемых данных и параметров, можно указать переменные и определить пути в командных файлах. GetUser.bat (листинг 1) собирает данные и параметры из исходного компьютера, а PutUser.bat (листинг 2) размещает данные и параметры на целевой машине. Список аргументов Scanstate приведен в табл. 1. Параметры /u, /f и /x следует задействовать только для диагностики. Scanstate по умолчанию собирает параметры пользователя, параметры системы и данные, указанные в файлах .inf.

Сначала рассмотрим GetUser.bat. Переменная %1 командного файла (листинг 1) применяется для имени пользователя; вместо переменной необходимо ввести значение. Это значение входит в путь миграции — обязательный аргумент Scanstate — и используется для создания специальных папок пользователей. Затем командный файл создает и присваивает имя (с помощью переменной) папке, в которую впоследствии будут записаны переносимые данные и файлы журналов. Командный файл создает эту папку в ранее созданной папке Captured.

Затем командный файл определяет версию операционной системы и переходит к соответствующему разделу для запуска подходящей версии Scanstate. Меняется только путь к scanstate.exe, и один набор .inf-файлов можно задействовать для операционных систем как типа Windows NT, так и Windows 9x. В командный файл входит параметр /c, и Scanstate продолжает работу, несмотря на мелкие проблемы, такие как длинные имена файлов. Для каждого обрабатываемого .inf-файла необходимо указать путь и имя; для этого следует ввести путь и имя, предварив их символами /i, в качестве аргументов команды scanstate.exe. Для успешного выполнения командного файла, независимо от способа запуска, я рекомендую использовать полный путь UNC. Параметры /l и /v обеспечивают информацию о местонахождении, имени и уровне детализации файла журнала. Последний аргумент, MyServerusmtCaptured\%1, — путь, по которому будут записаны собранные файлы и параметры.

Теперь о PutUser.bat. Строка аргументов для Loadstate не столь сложна, так как программа использует лишь один входной файл, migration.inf, созданный процессом Scanstate. Кроме того, не существует ANSI-версии Loadstate: USMT предназначена лишь для миграции на новые операционные системы, и командному файлу не нужна логика обнаружения версии операционной системы. Синтаксис командного файла в листинге 2 в основном такой же, как в листинге 1 для Scanstate. Используются те же параметры, за исключением /c. С помощью введенной пользователем переменной определяется путь к восстанавливаемым данным и параметрам; в этом же месте сохраняется файл журнала.

При запуске Scanstate «на полную мощность», как в GetUser.bat, объем собранных данных превышает практическую потребность. Однако я рекомендую начать именно с этого режима, чтобы познакомиться с переносимой информацией и выяснить, как происходит миграция на целевую систему. Затем, изменив или удалив некоторые .inf-файлы, можно исключить любые лишние данные. Чтобы определить круг переносимых данных и параметров, можно создать собственные .inf-файлы и указать их в командном файле с помощью параметра /i.

Изменение .inf-файлов

После нескольких пробных миграций, когда администратор увидит, какой внушительный объем разнообразных данных собирает USMT по умолчанию, можно настроить инструмент на нужды конкретного предприятия. Для этого могут понадобиться следующие три файла: migsys.inf, miguser.inf и migapp.inf. Изменять sysfiles.inf не стоит, так как в нем содержится список файлов, которые не следует переносить; этот стандартный список включает файлы операционной системы, которые могут вступить в конфликт с файлами новой операционной системы целевой машины. Отступить от этого правила можно лишь в том случае, если требуется дополнить список файлом, чтобы исключить его из процесса миграции. Migsys.inf содержит правила для миграции таких элементов операционной системы, как параметры доступности, шрифты, звуки, файлы мультимедиа и другие параметры, определяющие облик системы. В Miguser.inf указаны учетные записи пользователей и папки компьютера, подлежащие миграции. В этот список, наряду с некоторыми другими, входят папки Desktop, Start Menu, Favorites, My Documents, Quick Launch. Migapp.inf переносит параметры для группы избранных приложений. Прилагаемые миграционные правила охватывают множество широко распространенных программ Microsoft и других поставщиков, но следует помнить, что переносятся только параметры — чтобы воспользоваться перенесенными параметрами, необходимо развернуть соответствующие приложения на целевой системе.

Зная назначение .inf-файлов, можно настроить их на конкретную задачу. Структура inf-файлов может быть знакома администраторам с опытом программирования для Windows. Если это не так, то можно воспользоваться приведенными ниже рекомендациями, но для глубокой настройки полезно прочитать дополнительную литературу о структуре .inf-файлов. На установочном компакт-диске Windows Server 2003 в папке USMT хранится обширный документ User State Migration Tool — INF Commands.

Экран 1. Пример .inf-файла

Базовая структура .inf-файлов содержит имена разделов (section name), заключенные в скобках. В примере на экране 1 показаны разделы version и System Settings. Информация в разделе часто указывает на компонент или индивидуальное состояние далее в .inf-файле. Компонент (component) — это набор связанных правил, определяющих состояние элемента, а индивидуальное состояние (individual state) определяется одним файлом, параметром реестра или папкой. USMT обрабатывает большинство элементов, перечисленных в стандартных .inf-файлах как компоненты, так как проще обрабатывать элементы, объединенные в группы. Например, на экране 1 элементы в разделе System Settings представляют собой компоненты, и каждый из них представлен далее в .inf-файле как раздел, который содержит элементы, образующие это состояние. Чтобы блокировать набор всех файлов и параметров, составляющих часть компонента, достаточно просто поставить точку с запятой перед именем компонента в верхнем разделе (в данном случае System Settings). На первый взгляд процедура может показаться сложной, но после небольшой практики нетрудно научиться перемещаться по .inf-файлам.

Чтобы увеличить объем данных, собираемых USMT, можно дополнить стандартные файлы .inf новыми элементами, но я рекомендую создать специальный .inf-файл и обрабатывать .inf-файлы, перечислив их в командной строке Scanstate с префиксом /i. В листинге 3 приведен упрощенный пример .inf-файла, в котором используются компоненты и показано, каким образом один раздел указывает на другой. Данный пример позволяет понять последовательность обработки .inf-файлов и приступить к созданию собственных файлов. В ранее упоминавшемся документе User State Migration Tool — INF Commands содержится ряд советов по изменению и созданию .inf-файлов.

Гибкий инструмент

И FSTW, и USMT полезны для переноса настроек пользователей с одной системы на другую, но благодаря гибкости и возможности автоматизировать работу утилита USMT лучше приспособлена для миграции в масштабах предприятия. В Windows 2003 появилась усовершенствованная версия USMT, дополненная, в частности, функцией автоматического изменения членства в домене.

В заключение я хотел бы предупредить, что при смене версий в процессе работы придется использовать новые .inf-файлы. Необходимо обновить и командные файлы, так как некоторые аргументы изменяются.


Эд Рот — редактор Windows & .NET Magazine. С ним можно связаться по адресу: eroth@winnetmag.com