Génération d’un jeu de restauration
Un jeu de restauration est une liste de tous les fichiers à restaurer et des emplacements dans lesquels ils seront restaurés.
Comme lors de la génération de la liste des fichiers de sauvegarde (voir Génération d’un jeu de sauvegarde), un algorithme permettant de déterminer quels fichiers restaurer et où les restaurer doit procéder à l’écriture instance par instance d’enregistreur, et sur la base d’un composant par composant pour chaque writer instance.
Il est nécessaire d’associer chaque fichier sur le support de sauvegarde au composant qui l’a géré. Il est également nécessaire d’obtenir la méthode de restauration du composant de gestion et les informations sur la cible de restauration du fichier, ainsi que ses mappages d’emplacements alternatifs (le cas échéant).
Certains fichiers peuvent également nécessiter des opérations de fichiers partiels ou des cibles dirigées pour la restauration.
En examinant la capacité de sélection des composants pour les chemins de sauvegarde et logiques (voir Utilisation de la fonctionnalité de sélection et des chemins logiques), un demandeur est en mesure de déterminer la structure des composants de l’opération de sauvegarde qu’il va restaurer.
Une fois la structure de composant de la sauvegarde établie, le demandeur peut obtenir les informations du jeu de fichiers de chaque composant (spécification de fichier, chemin d’accès et indicateur de récursivité). Un demandeur peut ensuite générer un jeu de restauration.
Les fichiers nécessitant des fichiers partiels ou des cibles dirigées fournissent leurs propres instructions de restauration détaillées (voir Emplacements de sauvegarde et de restauration non par défaut), qui peuvent ensuite être ajoutés au jeu de restauration.
Un mécanisme classique pour générer un jeu de restauration pour les fichiers qui ne sont pas impliqués dans des opérations de fichiers partiels ou des cibles dirigées peut procéder en procédant comme suit :
Obtenez la liste des fichiers sur le support de sauvegarde, y compris leurs chemins d’accès d’origine.
Identifiez la classe et le composant writer pour chaque fichier sur le support de sauvegarde en procédant comme suit :
Pour chaque enregistreur, obtenez des informations sur les composants (IVssWMComponent) en appelant IVssExamineWriterMetadata::GetComponent sur tous ses composants.
Pour chaque composant, obtenez des informations de descripteur de fichier (IVssWMFiledesc) pour chaque ensemble de fichiers que le composant contient (en fonction des types de données que le composant contient en appelant IVssWMComponent::GetFile, IVssWMComponent::GetDatabaseFile et IVssWMComponent::GetDatabaseLogFile.
Comparez le nom et les informations de chemin d’accès du fichier à celles retournées par les informations de chemin d’accès contenues dans le descripteur de fichier pour chaque ensemble de fichiers dans un composant (retournés par IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec et IVssWMFiledesc::GetRecursive) par rapport aux informations de chemin d’accès aux fichiers stockés pour déterminer si le fichier fait partie du composant.
Notes
Vous devez ignorer toute autre information d’emplacement dans le descripteur de fichier récupéré à partir d’un composant trouvé dans un document de métadonnées writer stocké (autrement dit, IVssWMFiledesc::GetAlternateLocation ne retourne pas NULL). Cet autre emplacement est le chemin d’accès alternatif, qui est utilisé uniquement pendant la sauvegarde.
Obtenez d’autres informations de mappage pour chaque fichier sur le support de sauvegarde :
- Les mappages de fichiers alternatifs sont stockés au niveau de l’enregistreur, et non au niveau du composant, et sont obtenus à partir de l’objet IVssWMFiledesc retourné par IVssExamineWriterMetadata::GetAlternateLocationMapping.
- Vous pouvez déterminer si un fichier particulier a un autre mappage d’emplacement en vérifiant le chemin et le nom du fichier par rapport au chemin d’accès et à la spécification de fichier contenus dans le mappage d’emplacement de substitution retourné par IVssExamineWriterMetadata::GetAlternateLocationMapping, via IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec et IVssWMFiledesc::GetRecursive. (Si un autre chemin d’accès a été utilisé pendant la sauvegarde, ces informations doivent être ignorées pendant cette case activée dans le traitement d’une restauration.)
- Si un fichier et un autre emplacement correspondent aux descripteurs de fichier de mappage, vous utilisez ensuite la méthode IVssWMFiledesc::GetAlternateLocation de l’objet IVssWMFiledesc retourné par IVssExamineWriterMetadata::GetAlternateLocationMapping pour rechercher l’autre emplacement dans lequel vous pouvez restaurer le fichier.
- Le mappage d’emplacement de remplacement obtenu de cette façon ne correspond pas nécessairement à celui retourné à partir du document composants de sauvegarde par IVssComponent::GetAlternateLocationMapping. La valeur IVssWMFiledesc::GetAlternateLocation n’est pas vide uniquement si le mappage d’emplacement de remplacement est utilisé pour un fichier.
Avec ces informations de fichier et de composant, le document composants de sauvegarde peut être interrogé pour obtenir des informations sur les cibles de restauration, les options et les nouveaux emplacements de restauration pour chaque fichier. Ces informations peuvent être combinées avec la liste des fichiers, des composants et d’autres emplacements.
Les fichiers non protégés par des enregistreurs peuvent être sélectionnés d’une manière cohérente avec les opérations de restauration traditionnelles.
À ce stade, un demandeur doit disposer d’une liste de tous les fichiers qu’il doit restaurer, ainsi que d’instructions sur la façon de les restaurer, et peut commencer la restauration des fichiers sur la base des éléments suivants :
- L’utilisation de mappages d’emplacements alternatifs ou de l’emplacement du fichier d’origine comme cible pour la restauration dépend de la présence ou de l’absence d’un fichier à cet emplacement cible et des paramètres de composant de VSS_RESTORE_TARGET et de VSS_RESTOREMETHOD_ENUM (voir Emplacements de sauvegarde et de restauration non par défaut).
- La réussite d’une tentative de restauration dépend de problèmes tels que les autorisations d’accès de la cible, le verrouillage des fichiers cibles et d’autres problèmes classiques liés à la restauration des fichiers.
- La réussite ou l’échec de la restauration d’un composant donné pour un writer instance donné doit être conservée dans le document composants de sauvegarde en appelant IVssBackupComponents::SetFileRestoreStatus. Cela rend les informations accessibles aux rédacteurs lorsqu’ils traitent l’événement PostRestore.
- Si un fichier est restauré dans un autre mappage d’emplacement, le demandeur doit appeler IVssBackupComponents::AddAlternativeLocationMapping. Cela permettra aux rédacteurs de déterminer si leurs fichiers ont été restaurés à d’autres emplacements via IVssComponent::GetAlternateLocationMapping.
- Les demandeurs peuvent trouver souhaitable de restaurer des fichiers à de nouveaux emplacements. Cela est acceptable, mais le demandeur doit l’indiquer au writer à l’aide de la méthode IVssBackupComponents::AddNewTarget .