Rôle demandeur dans les sauvegardes incrémentielles et différentielles VSS
Pour prendre en charge un incrémentiel ou opération de sauvegarde différentielle, un demandeur doit effectuer les opérations suivantes :
- Déterminez le degré de prise en charge de l’enregistreur disponible (à l’aide de IVssBackupComponents ::GetWriterMetadata pour obtenir l’accès aux informations dans les documents de métadonnées writer), en particulier, déterminer le schéma de sauvegarde pris en charge (VSS_BACKUP_SCHEMA).
- Définissez un état de sauvegarde approprié.
- Obtenez des spécifications de niveau de fichier et de jeu de fichiers pour une sauvegarde incrémentielle ou différentielle.
- Effectuez la sauvegarde.
Détermination du demandeur de prise en charge incrémentielle et différentielle et de la configuration
Un demandeur doit obtenir des informations sur la prise en charge de l’enregistreur avant de sélectionner des composants à inclure dans une sauvegarde incrémentielle ou différentielle ou en définissant son propre état.
-
détermination de la prise en charge de l’enregistreur
-
Un demandeur détermine si un enregistreur donné prend en charge les sauvegardes incrémentielles ou différentielles VSS en récupérant le masque de schéma de sauvegarde de l’enregistreur à l’aide de la méthode IVssExamineWriterMetadata ::GetBackupSchema.
Le masque de schéma de sauvegarde d’un enregistreur prenant en charge les techniques incrémentielles ou différentielles VSS contient des VSS_BS_INCREMENTAL ou des VSS_BS_DIFFERENTIAL, ou les deux. Les auteurs peuvent également indiquer des restrictions sur leur participation avec l’indicateur de VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL. (Consultez VSS_BACKUP_SCHEMA pour plus d’informations sur les schémas de sauvegarde).
-
paramètre de l’état de sauvegarde du demandeur
-
Un demandeur indique qu’une sauvegarde est une sauvegarde incrémentielle ou différentielle en définissant un type de sauvegarde sur VSS_BT_INCREMENTAL ou VSS_BT_DIFFERENTIAL à l’aide de la méthode IVssBackupComponents ::SetBackupState avant de générer un événement PrepareForBackup .
La méthode IVssBackupComponents ::SetBackupState est également utilisée pour indiquer si le demandeur fournit prise en charge partielle des fichiers, qui est fréquemment utilisée pour implémenter certaines opérations de sauvegarde et de restauration incrémentielles.
Obtention des spécifications de l’enregistreur pour les sauvegardes incrémentielles et différentielles
Les informations de spécification de sauvegarde de fichiers au niveau du jeu de fichiers (VSS_FILE_SPEC_BACKUP_TYPE) contenues dans le document de métadonnées de l’enregistreur de chaque enregistreur sont disponibles pour examen après le retour réussi de IVssBackupComponents ::CollectWriterMetadata.
Toutefois, un enregistreur peut ajouter fichiers différentiels ou demander prise en charge partielle des fichiers jusqu’à ce que sa gestion réussie de l’événement PostSnapshot.
La spécification de prise en charge des fichiers et des fichiers partiels peut remplacer le type de sauvegarde de spécification de fichier. Les demandeurs peuvent donc différer une analyse complète de toutes les spécifications de l’enregistreur sur les sauvegardes incrémentielles et différentielles jusqu’à ce que le retour réussi de IVssBackupComponents ::P repareForBackup.
-
obtenir des informations sur la spécification de sauvegarde de fichiers
-
Les informations de spécification de sauvegarde de fichiers au niveau du jeu de fichiers (VSS_FILE_SPEC_BACKUP_TYPE) sont contenues dans le document de métadonnées de l’enregistreur de chaque enregistreur et peuvent être examinées immédiatement après le retour réussi de IVssBackupComponents ::CollectWriterMetadata.
Les demandeurs doivent obtenir des masques de spécification de sauvegarde de fichiers (VSS_FILE_SPEC_BACKUP_TYPE) pour chaque jeu de fichiers de chacun des composants d’un enregistreur à inclure dans la sauvegarde incrémentielle ou différentielle, que le composant soit explicitement ou implicitement inclus.
Un demandeur peut déterminer quel document de métadonnées de l’enregistreur doit être interrogé à l’aide de IVssBackupComponents ::GetWriterComponentsCount et IVssBackupComponents ::GetWriterComponents. L’instance de l’interface IVssWriterComponentsExt retournée par IVssBackupComponents ::GetWriterComponents fournit des informations d’enregistreur via la méthode IVssWriterComponentsExt ::GetWriterInfo.
Le demandeur obtient des informations de composant via des instances de l’interface IVssWMComponent correspondant à un composant inclus géré par un enregistreur donné à l’aide de IVssExamineWriterMetadata ::GetComponent.
Les informations sur les jeux de fichiers gérés par le composant correspondant à l’interface IVssWMComponent sont obtenues par des appels à IVssWMComponent ::GetFile, IVssWMComponent ::GetDatabaseFileou IVssWMComponent ::GetDatabaseLogFile (le cas échéant).
Ces appels peuvent retourner des instances de l’interface IVssWMFiledesc pour chacun des jeux de fichiers d’un composant.
Le type de sauvegarde de spécification de fichier d’un jeu de fichiers est obtenu en appelant IVssWMFiledesc ::GetBackupTypeMask.
-
obtenir des informations sur les fichiers partiels et les fichiers différentiels
-
Un demandeur obtient des informations de fichier partiel et de fichier différent via l’interface IVssComponent.
Un demandeur peut itérer sur tous les enregistreurs inclus dans une sauvegarde à l’aide de IVssBackupComponents ::GetWriterComponentsCount et IVssBackupComponents ::GetWriterComponents.
L’instance d’une interface IVssWriterComponentsExt retournée par IVssBackupComponents ::GetWriterComponents fournit l’accès à toutes les instances de l’interface IVssComponent correspondante aux composants d’un enregistreur donné inclus explicitement par le biais des méthodes IVssWriterComponentsExt ::GetComponent et IVssWriterComponentsExt ::GetComponentCount.
Un demandeur doit passer par toutes les instances de IVssComponent pour tous les enregistreurs dont le schéma prend en charge la sauvegarde incrémentielle ou différentielle, c’est-à-dire les enregistreurs dont le masque de schéma de sauvegarde est retourné par IVssExamineWriterMetadata ::GetBackupSchema, inclut VSS_BS_INCREMENTAL lorsque le type de sauvegarde est VSS_BT_INCREMENTAL, ou VSS_BS_DIFFERENTIAL lorsque le type de sauvegarde est VSS_BS_DIFFERENTIAL.
Les informations de fichier partiel sont obtenues en appelant IVssComponent ::GetPartialFileCount et IVssComponent ::GetPartialFile (voir Working with Partial Files).
Pour les enregistreurs qui prennent en charge les opérations de sauvegarde en fonction des dernières données de modification d’un fichier (enregistreurs dont le masque de schéma de sauvegarde, comme retourné par IVssExamineWriterMetadata ::GetBackupSchema, inclut VSS_BS_LAST_MODIFY), les informations de fichier différentielles sont obtenues en appelant IVssComponent ::GetDifferencedFilesCount et IVssComponent ::GetDifferencedFile.
Notez que les fichiers différentiels peuvent être de nouveaux fichiers, c’est-à-dire des fichiers qui ne sont pas membres d’un jeu de fichiers actuellement dans le document de métadonnées de l’enregistreur donné.
Les demandeurs ne doivent pas trouver de fichiers inclus à la fois pour les opérations partielles de fichiers et comme fichiers différentiels. Si un demandeur rencontre une telle situation, il doit retourner et consigner une erreur d’enregistreur.
Un demandeur peut toujours choisir de sauvegarder les fichiers de l’enregistreur problématique, mais dans ce cas, il doit le faire en fonction de la spécification trouvée dans les informations de fichier différentes.
Implémentation de sauvegardes incrémentielles ou différentielles
Avant d’implémenter une sauvegarde, les demandeurs doivent disposer d’informations sur les enregistreurs qui prennent en charge un incrémentiel ou sauvegarde différentielle, toutes les opérations de fichier partielles demandées, tous les fichiers différenciés et le type de sauvegarde de spécification de fichier de tous les autres fichiers.
-
enregistreurs non pris en charge
-
Les enregistreurs dont le schéma ne prend pas en charge la sauvegarde incrémentielle ou différentielle (enregistreurs dont le masque de schéma de sauvegarde est retourné par IVssExamineWriterMetadata ::GetBackupSchema, inclut VSS_BS_INCREMENTAL lorsque le type de sauvegarde est VSS_BT_INCREMENTAL ou n’inclut pas VSS_BS_DIFFERENTIAL lorsque le type de sauvegarde est VSS_BS_DIFFERENTIAL) ne peut pas fournir une prise en charge directe à une opération de sauvegarde incrémentielle ou différentielle.
Cela ne signifie pas nécessairement que les données des enregistreurs ne seront pas impliquées dans une opération de sauvegarde incrémentielle ou différentielle. Toutefois, le choix de ce qu’il faut faire est à la discrétion du demandeur. Le demandeur peut effectuer l’une des opérations suivantes :
- Sauvegardez aucun fichier appartenant aux enregistreurs non pris en charge (indiquez clairement cela à l’utilisateur)
- Sauvegarder tous les fichiers des enregistreurs non pris en charge
- Effectuez une sauvegarde incrémentielle à l’aide des données du système de fichiers et des journaux d’historique du demandeur.
La dernière alternative doit être utilisée avec soin et uniquement si le demandeur comprend si les enregistreurs impliqués peuvent prendre en charge la sauvegarde incrémentielle ou différentielle et la restauration des données indépendamment du mécanisme VSS.
-
Des rédacteurs en charge
-
Un demandeur doit traiter (dans l’ordre) tous les fichiers différences d’un enregistreur, puis gérer les demandes de fichiers partiels, puis sauvegarder les fichiers restants en fonction de leur type de sauvegarde de spécification de fichier (VSS_FILE_SPEC_BACKUP_TYPE).
sauvegarde de fichiers différentiels :
Pour les enregistreurs qui prennent en charge les opérations de sauvegarde sur la base de données de dernière modification (enregistreurs dont le masque de schéma de sauvegarde est retourné par IVssExamineWriterMetadata ::GetBackupSchema, inclut VSS_BS_LAST_MODIFY), un demandeur utilise le chemin d’accès, la spécification de fichier et les informations d’indicateur de récursion retournées par IVssComponent ::GetDifferencedFile pour générer une liste de fichiers en tant que candidats à la sauvegarde ou à la restauration incrémentielle.
IVssComponent ::GetDifferencedFile peut également retourner une heure de dernière modification (exprimée sous la forme d’une structure FILETIME).
Si la dernière heure de modification fournie par l’enregistreur n’est pas nulle, le demandeur l’utilise comme base (plutôt que les informations du système de fichiers ou les propres données stockées du demandeur) pour déterminer si le fichier doit être inclus dans le incrémentiel ou sauvegarde différentielle.
Par exemple, si l’heure de la dernière modification d’un fichier telle qu’elle est retournée par l’enregistreur a été la suivante :
- Après la dernière sauvegarde complète, le fichier doit être inclus dans les sauvegardes incrémentielles et différentielles.
- Après la dernière sauvegarde complète, mais avant la dernière sauvegarde incrémentielle, le fichier doit être inclus dans les opérations de sauvegarde incrémentielle, mais pas dans les sauvegardes différentielles.
Si la dernière heure de modification fournie par l’enregistreur est égale à zéro, le demandeur doit utiliser les informations du système de fichiers et ses propres données stockées pour déterminer l’heure de modification du fichier différent.
à l’aide d’opérations partielles de fichier :
Si un enregistreur a demandé qu’un fichier soit sauvegardé à l’aide d’une opération de fichier partielle, le demandeur utilise les informations de décalage de fichier pour enregistrer les segments de fichiers indiqués dans le support de sauvegarde. (Consultez Utilisation des fichiers partiels pour plus d’informations sur les opérations de fichiers partiels).
Comme indiqué ci-dessus, un enregistreur ne doit pas désigner un fichier à la fois comme un fichier différent et comme participant à une opération partielle de fichier. Si un demandeur rencontre une telle situation, il doit retourner et consigner une erreur d’enregistreur.
Un demandeur peut toujours choisir de sauvegarder les fichiers de l’enregistreur problématique, mais dans ce cas, il doit le faire en fonction de la spécification trouvée dans les informations de fichier différentes.
utilisation du type de sauvegarde de spécification de fichier :
Ayant traité tous les fichiers différents et les opérations partielles de fichier, le demandeur traite désormais tous les fichiers restants dans son jeu de sauvegarde en fonction de leur type de sauvegarde de spécification de fichier (VSS_FILE_SPEC_BACKUP_TYPE).
Il existe trois valeurs de « sauvegarde requise » de l’énumération VSS_FILE_SPEC_BACKUP_TYPE qui affectent les sauvegardes différentielles et incrémentielles :
- VSS_FSBT_ALL_BACKUP_REQUIRED
- VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
- VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED
Il existe trois valeurs de « cliché instantané requis » :
- VSS_FSBT_ALL_SNAPSHOT_REQUIRED
- VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
- VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED
Les jeux de fichiers étiquetés avec un type de sauvegarde de spécification de fichier « cliché instantané requis » indiquent qu’un demandeur doit copier des données à partir d’une cliché instantané lors de l’exécution d’opérations de sauvegarde incrémentielles, DIFFÉRENTIELLES ou ALL (qui incluent des opérations de sauvegarde incrémentielles et différentielles).
L’indicateur « sauvegarde requise », appliqué aux opérations de sauvegarde INCRÉMENTIELLE, DIFFÉRENTIELLE ou ALL, indique que l’enregistreur attend une copie de la version actuelle du jeu de fichiers à la suite de la restauration de toute opération de sauvegarde. En règle générale, cela signifie que si un jeu de fichiers est marqué avec « sauvegarde requise », un demandeur copie tous ses membres vers un support de sauvegarde pendant une sauvegarde incrémentielle ou différentielle, indépendamment du moment où leur sauvegarde ou leur modification s’est produite.
Par défaut, les jeux de fichiers sont ajoutés aux composants avec un type de sauvegarde de spécification de fichier de VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED. Par conséquent, à moins qu’un enregistreur définit explicitement le type de sauvegarde de spécification de fichier dans le cas contraire, les demandeurs devront copier ces fichiers non gérés par des opérations de fichiers partielles ou des fichiers séparés dans la plupart des jeux de fichiers seront généralement copiés dans leur intégralité dans le support de sauvegarde.
-
tampons de sauvegarde
-
Les enregistreurs qui prennent en charge les tampons de sauvegarde (VSS_BS_TIMESTAMP) peuvent choisir de générer des informations d’horodatage de sauvegarde à utiliser pour prendre en charge les futures opérations de sauvegarde et de restauration incrémentielles et différentielles.
Le format et les informations contenues dans des chaînes contenant des informations d’horodatage de sauvegarde sont privées pour l’enregistreur qui les génère ; le demandeur ne sait pas comment traiter ces informations.
Les enregistreurs de prise en charge stockent le tampon de sauvegarde dans le document composants de sauvegarde sous forme de chaîne à l’aide de la méthode IVssComponent ::SetBackupStamp.
Le rôle du demandeur dans la gestion des informations d’horodatage de sauvegarde est (s’il existe) pour le rendre disponible pour l’enregistreur en appelant IVssBackupComponents ::SetPreviousBackupStamp dans une opération de sauvegarde ou de restauration ultérieure.