Restaurando Backups Incrementais e Diferenciais
A restauração de um backup incremental ou diferencial no VSS não difere significativamente de qualquer outra operação de restauro do VSS.
Um escritor pode modificar destinos de restauração ou solicitar segmentação direcionada, e um solicitante deve lidar com mapeamentos de locais alternativos e novos destinos, assim como com qualquer outra restauração. Há, no entanto, dois problemas significativos a serem observados ao lidar com a restauração de um backup incremental ou diferencial: restaurações adicionais e carimbos de backup.
Restaurações adicionais
A primeira questão é a das restaurações adicionais. Um operador de backup pode precisar executar várias operações de restauração usando uma mídia de backup incremental ou diferencial inicial completa e subsequente como origem.
Alguns escritores, normalmente como parte do seu tratamento de um evento PostRestore usando CVssWriter::OnPostRestore, usam arquivos restaurados para executar atualizações de dados atualmente no disco. Para alguns desses autores, é ineficiente — ou perigoso — atualizar repetidamente no disco dados provenientes de ficheiros restaurados.
Portanto, é importante que os aplicativos de backup indiquem quando um componente ou conjunto de componentes pode exigir restaurações subsequentes chamando IVssBackupComponents::SetAdditionalRestores.
Um gravador chamaria IVssComponent::GetAdditionalRestores para verificar se o operador de backup planeava mais operações de restauração do componente ou conjunto de componentes.
Se o solicitante não tivesse chamado IVssBackupComponents::SetAdditionalRestores, então IVssComponent::GetAdditionalRestores retornaria false, e o gravador poderia executar qualquer processamento pós-restauração, se necessário.
Se IVssBackupComponents::SetAdditionalRestores tiver sido chamado, então IVssComponent::GetAdditionalRestores retorna true, e um writer deverá decidir como lidar com operações pós-restauração — por exemplo, o writer pode optar por não atualizar os seus dados no disco.
Carimbos de backup
Como parte da operação de backup completo anterior, um escritor pode ter armazenado um carimbo de backup no Documento de Componentes de Backup do Solicitante.
O carimbo de backup é armazenado como uma cadeia de caracteres e seu formato e informações não são inteligíveis para o solicitante. Portanto, o solicitante não pode fazer uso direto das informações de carimbo de backup.
Em vez disso, sua tarefa é disponibilizar essas informações para o gravador, chamando o IVssBackupComponents::SetPreviousBackupStamp método antes da geração de um evento PrepareForBackup para um backup incremental.
O solicitante faz isso componente a componente. Um solicitante examina as informações de selo de backup do componente armazenado ou do conjunto de componentes usando IVssComponent::GetBackupStamp.
Se as informações de carimbo de backup forem apropriadas para o tipo de restauração que o solicitante está a realizar, estas serão disponibilizadas como o carimbo de data/hora do último backup de um componente com o método IVssBackupComponents::SetPreviousBackupStamp.
Um escritor recupera as informações de carimbo de backup usando IVssComponent::GetPreviousBackupStamp. Um escritor dessa classe gerou o carimbo de backup inicial, de modo que o escritor seja capaz de decodificar esse carimbo e usar as informações. Com base nisso, ao lidar com um evento PreRestore, um escritor pode optar por executar ações como alterar destinos de restauração ou solicitar direcionamento.