Gerando um conjunto de restauração
Um conjunto de restauração é uma lista de todos os arquivos a serem restaurados e os locais para os quais eles serão restaurados.
Como ao gerar a lista de arquivos de backup (consulte Gerando um conjunto de backup), um algoritmo para determinar quais arquivos restaurar e onde restaurá-los deve continuar a instância de gravador por instância de gravador e em uma base componente por componente para cada instância de gravador.
É necessário associar cada arquivo na mídia de backup ao componente que o gerenciou. Também é necessário obter o método de restauração do componente de gerenciamento e as informações de destino de restauração do arquivo e seus mapeamentos de localização alternativos (se houver).
Alguns arquivos também podem exigir operações de arquivos parciais ou destinos direcionados para restauração.
Examinando a selebilidade dos componentes para backup e caminhos lógicos (consulte Trabalhando com a selebilidade e caminhos lógicos), um solicitante é capaz de determinar a estrutura de componentes da operação de backup que vai restaurar.
Com a estrutura de componentes do backup estabelecida, o solicitante pode obter informações de conjunto de arquivos de cada componente (especificação de arquivo, caminho e sinalizador de recursão). Em seguida, um solicitante pode gerar um conjunto de restauração.
Os arquivos que exigem arquivos parciais ou destinos direcionados fornecem suas próprias instruções de restauração detalhadas (consulte Locais de backup e restauração não padrão), que podem ser adicionados ao conjunto de restauração.
Um mecanismo típico para gerar um conjunto de restauração para arquivos não envolvidos com operações de arquivos parciais ou destinos direcionados pode continuar fazendo o seguinte:
Obtenha uma lista de arquivos na mídia de backup, incluindo seus caminhos originais.
Identifique a classe de gravador e o componente para cada arquivo na mídia de backup fazendo o seguinte:
Para cada gravador, obtenha informações de componente (IVssWMComponent) chamando IVssExamineWriterMetadata::GetComponent em todos os seus componentes.
Para cada componente, obtenha informações de descritor de arquivo (IVssWMFiledesc) para cada conjunto de arquivos que o componente contém (dependendo dos tipos de dados que o componente contém chamando IVssWMComponent::GetFile, IVssWMComponent::GetDatabaseFile e IVssWMComponent::GetDatabaseLogFile.
Compare as informações de nome e caminho do arquivo com as retornadas pelas informações de caminho contidas no descritor de arquivo para cada conjunto de arquivos em um componente (retornado por IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec e IVssWMFiledesc::GetRecursive) em relação às informações de caminho dos arquivos armazenados para determinar se o arquivo faz parte do componente.
Observação
Você deve ignorar qualquer informação de localização alternativa no descritor de arquivo recuperado de um componente encontrado em um Documento de Metadados do Gravador armazenado (ou seja, IVssWMFiledesc::GetAlternateLocation não retorna NULL). Esse local alternativo é o caminho alternativo, que é usado somente durante o backup.
Obtenha informações alternativas de mapeamento para cada arquivo na mídia de backup:
- Mapeamentos de arquivo alternativos são armazenados no gravador, não no nível do componente, e são obtidos do objeto IVssWMFiledesc retornado por IVssExamineWriterMetadata::GetAlternateLocationMapping.
- Você pode determinar se um arquivo específico tem um mapeamento de localização alternativo verificando o caminho e o nome do arquivo em relação ao caminho e à especificação de arquivo contidos no mapeamento de localização alternativo retornado por IVssExamineWriterMetadata::GetAlternateLocationMapping, via IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec e IVssWMFiledesc::GetRecursive. (Se um caminho alternativo tiver sido usado durante o backup, essas informações deverão ser ignoradas durante esse marcar no processamento de uma restauração.)
- Se um arquivo e um local alternativo mapear os descritores de arquivo corresponderem, você usará o método IVssWMFiledesc::GetAlternateLocation do objeto IVssWMFiledesc retornado por IVssExamineWriterMetadata::GetAlternateLocationMapping para encontrar o local alternativo para o qual você pode restaurar o arquivo.
- O mapeamento de localização alternativo obtido dessa maneira não necessariamente concordará com o retornado do Documento de Componentes de Backup por IVssComponent::GetAlternateLocationMapping. O valor IVssWMFiledesc::GetAlternateLocation só será diferente se o mapeamento de localização alternativo for usado para um arquivo.
Com essas informações de arquivo e componente, o Documento de Componentes de Backup pode ser consultado para obter informações sobre destinos de restauração, opções e novos locais de restauração para cada arquivo. Essas informações podem ser combinadas com a lista de arquivos, componentes e locais alternativos.
Arquivos não protegidos por gravadores podem ser selecionados de maneira consistente com as operações de restauração tradicionais.
Neste ponto, um solicitante deve ter uma lista de todos os arquivos necessários para restaurar, juntamente com instruções sobre como restaurá-los e pode começar a restaurar arquivos com base em:
- Se os mapeamentos de localização alternativos ou o local do arquivo original deve ser usado como destino para a restauração dependerão da presença ou ausência de um arquivo nesse local de destino e das configurações de componente de VSS_RESTORE_TARGET e VSS_RESTOREMETHOD_ENUM (consulte Locais de backup e restauração não padrão).
- Se uma tentativa de restauração for bem-sucedida dependerá de problemas como as permissões de acesso do destino, se os arquivos de destino estiverem bloqueados e outros problemas convencionais envolvidos na restauração de arquivos.
- O sucesso ou a falha da restauração de um determinado componente para uma determinada instância de gravador devem ser preservados no Documento de Componentes de Backup chamando IVssBackupComponents::SetFileRestoreStatus. Isso tornará as informações acessíveis aos gravadores quando eles processarem o evento PostRestore.
- Se um arquivo for restaurado para um mapeamento de local alternativo, o solicitante deverá chamar IVssBackupComponents::AddAlternativeLocationMapping. Isso permitirá que os gravadores determinem se seus arquivos foram restaurados para locais alternativos por meio do IVssComponent::GetAlternateLocationMapping.
- Os solicitantes podem achar desejável restaurar arquivos para locais completamente novos. Isso é aceitável, mas o solicitante deve indicar isso para o gravador usando o método IVssBackupComponents::AddNewTarget .