Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao incluir, excluir e redirecionar arquivos e configurações, é importante saber como a USMT (Ferramenta de Migração de Estado do Usuário) lida com conflitos e precedência. A seguir estão as diretrizes de conflitos e precedência mais importantes a serem lembradas ao trabalhar com a USMT.
Se houver regras conflitantes em um componente, a regra mais específica será aplicada. No entanto, a <regra unconditionalExclude> é uma exceção porque tem precedência sobre todas as outras. Os nomes de diretório têm precedência sobre as extensões de arquivo. Para obter exemplos, consulte O que acontece quando há regras de inclusão> e <exclusão> conflitantes? e o primeiro exemplo em exemplos de precedência de <regras de inclusão> e <exclusão> mais adiante neste artigo.<
Somente regras dentro do mesmo componente podem afetar umas às outras, dependendo da especificidade. As regras que estão em componentes diferentes não afetam umas às outras, exceto a <regra unconditionalExclude> .
Se as regras forem igualmente específicas, <excluir> terá precedência sobre <incluir>. Por exemplo, se a <regra de exclusão> for usada para excluir um arquivo e usar a regra de <inclusão> para incluir o mesmo arquivo, o arquivo será excluído.
A ordem dos componentes não importa. Não importa quais componentes estão listados em qual arquivo.xml , porque cada componente é processado independentemente dos outros componentes em todos os arquivos.xml .
A ordem das regras de <inclusão> e <exclusão> em um componente não importa.
O <elemento unconditionalExclude> pode ser usado para excluir dados globalmente. Esse elemento exclui objetos, independentemente de qualquer outra <regra de inclusão> que esteja nos arquivos .xml . Por exemplo, o <elemento unconditionalExclude> pode ser usado para excluir todos os arquivos MP3 no computador ou para excluir todos os arquivos do
C:\UserData.
Geral
Qual é a relação entre as regras localizadas em diferentes componentes?
Somente as regras dentro do mesmo componente podem afetar umas às outras, dependendo da especificidade, exceto a <regra unconditionalExclude> . As regras que estão em componentes diferentes não afetam umas às outras. Se houver uma <regra de inclusão> em um componente e uma regra de exclusão> idêntica< em outro componente, os dados serão migrados porque as duas regras são independentes uma da outra.
Se uma <regra de inclusão> estiver em um componente e uma <regra locationModify> estiver em outro componente para o mesmo arquivo, o arquivo será migrado em ambos os locais. Ou seja, o arquivo é incluído com base na <regra de inclusão> e é migrado <com base na regra locationModificar> .
O arquivo .xml a seguir migra todos os arquivos de C:\Userdocs, incluindo arquivos.mp3 , porque a <regra de exclusão> é especificada em um componente separado.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/UserDocs">
<component type="Documents" context="System">
<displayName>User Documents</displayName>
<role role="Data">
<rules>
<exclude>
<objectSet>
<pattern type="File">C:\Userdocs\* [*.mp3]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
<component type="Documents" context="System">
<displayName> User documents to include </displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\Userdocs\ [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
Como funciona a precedência com o arquivo Config.xml?
Especificar migrate="no" no Config.xml arquivo é o mesmo que excluir o componente correspondente do arquivo de.xml de migração. No entanto, se migrate="no" estiver definido para a pasta de Documentos , mas existir uma regra semelhante à seguinte em um arquivo de .xml de migração (que inclui todos os arquivos de .doc da pasta de Documentos ), somente os arquivos.doc serão migrados e todos os outros arquivos serão excluídos:
<include>
<objectSet>
<pattern type="File">%CSIDL_PERSONAL%\* [*.doc] </pattern>
</objectSet>
</include>
Como a USMT processa cada componente em um arquivo .xml com vários componentes?
A ordem dos componentes não importa. Cada componente é processado independentemente dos outros componentes. Por exemplo, se uma <regra de inclusão> estiver em um componente e uma <regra locationModify> estiver em outro componente para o mesmo arquivo, o arquivo será migrado em ambos os locais. Ou seja, o arquivo é incluído com base na <regra de inclusão> e é migrado <com base na regra locationModificar> .
Como as regras são processadas?
Existem duas grandes categorias de regras.
Regras que afetam o comportamento das ferramentas ScanState e LoadState. Por exemplo, as <regras include>, <exclude> e <unconditionalExclude> são processadas para cada componente nos arquivos .xml . Para cada componente, a USMT cria uma lista de inclusão e uma lista de exclusão. Algumas das regras no componente podem ser descartadas devido à especificidade, mas todas as regras restantes são processadas. Para cada <regra de inclusão> , a USMT itera pelos elementos para ver se algum dos locais precisa ser excluído. A USMT enumera todos os objetos e cria uma lista de objetos que coletará para cada usuário. Quando a lista estiver concluída, cada um dos objetos será armazenado ou migrado para o computador de destino.
Regras que afetam o comportamento apenas da ferramenta LoadState. Por exemplo, as regras locationModify>, contentModify e destinationCleanup não afetam ScanState<.<><> Eles são processados apenas com LoadState. Primeiro, a ferramenta LoadState determina o conteúdo e o local de cada componente com base nas <regras locationModify> e <contentModify> . Em seguida, o LoadState processa <todas as regras destinationCleanup> e exclui dados do computador de destino. Por fim, LoadState aplica os componentes ao computador.
Como a USMT combina todos os arquivos .xml que eu especifico na linha de comando?
A USMT não distingue os arquivos .xml com base em seu nome ou conteúdo. Ele processa cada componente dentro dos arquivos separadamente. A USMT oferece suporte a vários arquivos .xml apenas para facilitar a manutenção e a organização dos componentes dentro deles. Como a USMT usa um urlid para distinguir cada componente dos outros, certifique-se de que cada arquivo .xml especificado na linha de comando tenha um urlid de migração exclusivo.
As <regras de inclusão> e <exclusão>
O que acontece quando há regras de inclusão> e <exclusão> conflitantes<?
Se houver regras conflitantes em um componente, a regra mais específica será aplicada, exceto com a <regra unconditionalExclude> , que tem precedência sobre todas as outras regras. Se as regras forem igualmente específicas, os dados não serão migrados. Por exemplo, se o mesmo arquivo for excluído e incluído, o arquivo não será migrado. Se houver regras conflitantes em componentes diferentes, as regras não afetarão umas às outras porque cada componente é processado de forma independente.
No exemplo a seguir, os arquivos mp3 não são excluídos da migração. Os arquivos mp3 não são excluídos porque os nomes de diretório têm precedência sobre as extensões de arquivo.
<include>
<objectSet>
<pattern type="File">C:\Data\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\* [*.mp3]</pattern>
</objectSet>
</exclude>
<Incluir> e <excluir> exemplos de precedência de regras
Esses exemplos explicam como a USMT lida com regras de <inclusão> e <exclusão> . Quando as regras estão em componentes diferentes, o comportamento resultante é o mesmo, independentemente de os componentes estarem nos mesmos arquivos de.xml de migração ou em diferentes.
Incluindo e excluindo arquivos
| Se o código a seguir existir no mesmo componente | Comportamento resultante | Explicação |
|---|---|---|
|
Migra todos os arquivos e subpastas em Dir1 (incluindo todos os arquivos .txt em C:). | A <regra de exclusão> não afeta a migração porque a regra de <inclusão> é mais específica. |
|
Migra todos os arquivos e subpastas em C:\Dir1, exceto os arquivos.txt em C:\Dir1\Dir2 e suas subpastas. | Ambas as regras são processadas conforme o esperado. |
|
Migra todos os arquivos e subpastas em C:\Dir1, exceto os arquivos.txt em C:\Dir1 e suas subpastas. | Ambas as regras são processadas conforme o esperado. |
|
Nada é migrado. | As regras são igualmente específicas, portanto, a <regra de exclusão> tem precedência sobre a regra de <inclusão> . |
|
Migra os arquivos .txt em Dir1 e os arquivos .txt de subpastas diferentes de Dir2. Nenhum arquivo é migrado do Dir2 ou de suas subpastas. |
Ambas as regras são processadas conforme o esperado. |
|
Migra todos os arquivos e subpastas de Dir2, exceto os arquivos.txt de Dir1 e de quaisquer subpastas de Dir1 (incluindo Dir2). | Ambas as regras são processadas conforme o esperado. |
| Se o código a seguir existir em componentes diferentes | Comportamento resultante | Explicação |
|---|---|---|
Componente 1:
Componente 2:
|
Migra todos os arquivos e subpastas de C:\Dir1\ (incluindo C:\Dir1\Dir2). | As regras que estão em componentes diferentes não afetam umas às outras, exceto a <regra unconditionalExclude> . Portanto, neste exemplo, embora alguns arquivos .txt tenham sido excluídos quando o Componente 1 foi processado, eles foram incluídos quando o Componente 2 foi processado. |
Componente 1:
Componente 2:
|
Migra todos os arquivos e subpastas de Dir2, exceto os arquivos.txt em C:\Dir1 e suas subpastas. | Ambas as regras são processadas conforme o esperado. |
Componente 1:
Componente 2:
|
Migra todos os arquivos .txt em Dir1 e em quaisquer subpastas. | O componente 1 não contém uma <regra de inclusão> , portanto, a <regra de exclusão> não é processada. |
Incluindo e excluindo objetos do Registro
| Se o código a seguir existir no mesmo componente | Comportamento resultante | Explicação |
|---|---|---|
|
Migra todas as chaves em HKLM\Software\Microsoft\Command Processor, exceto DefaultColor. | Ambas as regras são processadas conforme o esperado. |
|
Migra apenas DefaultColor em HKLM\Software\Microsoft\Command Processor. | DefaultColor é migrado porque a regra de <inclusão> é mais específica do que a <regra de exclusão> . |
|
Não migra DefaultColor. | As regras são igualmente específicas, portanto, a <regra de exclusão> tem precedência sobre a regra de <inclusão> . |
| Se o código a seguir existir em componentes diferentes | Comportamento resultante | Explicação |
|---|---|---|
Componente 1:
Componente 2:
|
Migra todas as chaves/valores em HKLM\Software\Microsoft\Command Processor. | As regras que estão em componentes diferentes não afetam umas às outras, exceto a <regra unconditionalExclude> . Neste exemplo, os objetos que foram excluídos quando o Componente 1 foi processado foram incluídos quando o Componente 2 foi processado. |
Colisões de arquivos
Qual é o comportamento padrão quando há colisões de arquivos?
Se não houver uma <regra de mesclagem> , o comportamento padrão do Registro será a origem substituir o destino. O comportamento padrão para arquivos é a origem a ser renomeada incrementalmente: por exemplo, OriginalFileName(1). OriginalExtension, OriginalFileName(2). OriginalExtension e assim por diante.
Como funciona a <regra de mesclagem> quando há colisões de arquivos?
Quando uma colisão é detectada, a USMT seleciona a regra de mesclagem> mais específica< e a aplica para resolver o conflito. Por exemplo, se existir uma <regra de mesclagem> para C:\* [*] definida como sourcePriority() e outra <regra de mesclagem> para C:\subpasta\* [*] definida como destinationPriority() , a USMT usará a regra destinationPriority() porque é a mais específica.
Cenário de exemplo
O computador de origem contém os seguintes arquivos:
C:\Data\SampleA.txtC:\Data\SampleB.txtC:\Data\Folder\SampleB.txt
O computador de destino contém os seguintes arquivos:
C:\Data\SampleB.txtC:\Data\SampleB.txt
Um arquivo de.xml personalizado contém o seguinte código:
<include>
<objectSet>
<pattern type="File">c:\data\* [*]</pattern>
</objectSet>
</include>
Para este exemplo, as informações a seguir descrevem o comportamento resultante se o código for adicionado ao arquivo de.xml personalizado.
Exemplo 1
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">c:\data* []</pattern>
</objectSet>
</merge>
Resultado: durante o ScanState, todos os arquivos são adicionados ao repositório. Durante LoadState, somente C:\Data\SampleA.txt é restaurado.
Exemplo 2
<merge script="MigXmlHelper.SourcePriority()">
<objectSet>
<pattern type="File">c:\data* []</pattern>
</objectSet>
</merge>
Resultado: durante o ScanState, todos os arquivos são adicionados ao repositório. Durante o LoadState, todos os arquivos são restaurados, substituindo os arquivos existentes no computador de destino.
Exemplo 3
<merge script="MigXmlHelper.SourcePriority()">
<objectSet>
<pattern type="File">c:\data\ [*]</pattern>
</objectSet>
</merge>
Resultado: durante o ScanState, todos os arquivos são adicionados ao repositório. Durante o LoadState, ocorrem as seguintes ações:
-
C:\Data\SampleA.txtfoi restaurado. -
C:\Data\SampleB.txté restaurado, substituindo o arquivo existente no computador de destino. -
C:\Data\Folder\SampleB.txtnão serão restauradas.