Rol de escritor en copias de seguridad incrementales y diferenciales de VSS

Normalmente, la participación de un escritor en copias de seguridad incrementales y diferenciales tiene lugar al controlar los eventos Identify (CVssWriter::OnIdentify), PrepareForBackup (CVssWriter:OnPrepareBackup) y PostSnapshot (CVssWriter:OnPostSnapshot). El modo en que participa un escritor tiene forma si admite marcas de copia de seguridad y tiempos de última modificación, y si el solicitante que ejecuta la copia de seguridad admite operaciones de archivos parciales.

Controlar eventos de identificación durante copias de seguridad incrementales y diferenciales

Al controlar el evento Identify, los escritores establecen su arquitectura básica para la operación de copia de seguridad incremental y diferencial a través del esquema de copia de seguridad (VSS_BACKUP_SCHEMA) y las máscaras de tipo de copia de seguridad de especificación de archivos (VSS_FILE_SPEC_BACKUP_TYPE).

Un escritor indica qué operaciones admite en su documento de metadatos del escritor creando una máscara de bits de VSS_BACKUP_SCHEMA valores y pasándola al método IVssCreateWriterMetadata::SetBackupSchema . Con esto, un escritor puede indicar si admite lo siguiente:

  • Copias de seguridad incrementales (VSS_BS_INCREMENTAL)
  • Copias de seguridad diferenciales (VSS_BS_DIFFERENTIAL)
  • Las copias de seguridad incrementales y diferenciales no se pueden mezclar (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)
  • Copias de seguridad incrementales y diferenciales mediante stamps de copia de seguridad (VSS_BS_TIMESTAMPED)
  • Copias de seguridad incrementales y diferenciales sobre la base de información sobre la última modificación de un archivo (VSS_BS_LAST_MODIFY)

Los escritores usan la máscara de tipo de copia de seguridad de especificación de archivo para proporcionar información de nivel de conjunto de archivos a los solicitantes sobre cómo incluir archivos en una copia de seguridad incremental o diferencial.

Un escritor puede establecer la máscara de tipo de copia de seguridad de especificación de archivo de un conjunto de archivos cuando agrega el conjunto de archivos a un componente mediante la creación de una máscara de bits de valores de VSS_FILE_SPEC_BACKUP_TYPE y pasarla a IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVssCreateWriterMetadata::AddFilesToFileGroup.

Hay tres valores de "copia de seguridad necesarios" de la enumeración VSS_FILE_SPEC_BACKUP_TYPE que afectan a las copias de seguridad diferenciales e incrementales:

  • VSS_FSBT_ALL_BACKUP_REQUIRED
  • VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

Hay tres valores de "instantánea requerida":

  • VSS_FSBT_ALL_SNAPSHOT_REQUIRED
  • VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

Los conjuntos de archivos etiquetados con un tipo de copia de seguridad de especificación de archivo "instantánea requerida" indican si un solicitante necesita copiar datos de una instantánea al realizar operaciones de copia de seguridad INCREMENTAL, DIFERENCIAL o ALL (que incluye operaciones incrementales y diferenciales).

La marca "copia de seguridad requerida", aplicada a las operaciones INCREMENTAL, DIFERENCIAL o ALL de copia de seguridad, indica que el escritor espera que la copia de seguridad de la versión actual del archivo esté disponible después de la restauración de cualquier operación de copia de seguridad. Normalmente, esto significa que si un conjunto de archivos se etiqueta con "copia de seguridad necesaria", todos sus miembros se copiarán en medios de copia de seguridad durante una copia de seguridad incremental o diferencial, independientemente de cuándo se produjo su copia de seguridad o modificación por última vez.

De forma predeterminada, los conjuntos de archivos se agregan a los componentes con un tipo de copia de seguridad de especificación de archivo de VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED. Por lo tanto, a menos que un desarrollador de escritor decida no usar el valor predeterminado (al elegir otro tipo de copia de seguridad de especificación de archivo, usar operaciones de archivo parciales o usar archivos con diferencias), los archivos de la mayoría de los conjuntos de archivos normalmente se copiarán en su totalidad en los medios de copia de seguridad.

En este momento, el documento de metadatos del escritor se rellena completamente con la mayoría de la información que un solicitante necesitará para iniciar una copia de seguridad diferencial o incremental. Durante el evento PrepareForBackup se controlará la especificación adicional del conjunto de archivos o la información de nivel de archivo para admitir la copia de seguridad.

Control de eventos PrepareForBackup durante copias de seguridad incrementales y diferenciales

Antes de que el solicitante continúe con la operación de copia de seguridad real, los escritores pueden modificar la especificación de una copia de seguridad incremental o diferencial modificando el documento de componentes de copia de seguridad del solicitante a través de la interfaz IVssComponent .

Dado que los escritores usan la interfaz IVssComponent , normalmente realizan estas preparación mientras controlan el evento PrepareForBackup .

En CVssWriter:OnPrepareBackup, los escritores pueden especificar con más precisión cómo se van a evaluar algunos archivos para la copia de seguridad, especificar qué mecanismos se deben usar en la copia de seguridad y, posiblemente, establecer sellos de copia de seguridad.

Archivos parciales

Si un solicitante los admite, un escritor puede optar por tener implementada una copia de seguridad incremental o diferencial mediante operaciones de archivos parciales. (Los escritores pueden determinar si un solicitante admite operaciones de archivos parciales mediante una llamada a CVssWriter::IsPartialFileSupportEnabled).

Los escritores usan IVssComponent::AddPartialFile para indicar las partes de los archivos seleccionados de los que se va a realizar una copia de seguridad durante la operación incremental o diferencial. Los solicitantes deben respetar esta especificación y siempre deben realizar copias de seguridad de las secciones especificadas de los archivos. (Vea Trabajar con archivos parciales para obtener más información sobre las operaciones de archivos parciales).

Con IVssComponent::AddPartialFile, un escritor puede agregar un archivo a la copia de seguridad que no se agregó previamente a uno de sus conjuntos de componentes (por IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVssCreateWriterMetadata::AddFilesToFileGroup) como un archivo parcial. Los nuevos archivos agregados a la copia de seguridad de esta manera deben estar en un volumen que ya se esté copiando en la sombra para esta copia de seguridad.

Si un archivo está implicado con operaciones de archivos parciales, esto reemplaza a cualquier tipo de copia de seguridad de especificación de archivo, que se omite.

Archivos diferenciados

Los escritores que admiten un esquema de copia de seguridad modificado por última vez (VSS_BS_SCHEMA) pueden agregar archivos diferenciados a una copia de seguridad incremental o diferencial.

Al especificar un archivo diferenciado, un escritor usa IVssComponent::AddDifferencedFileByLastModifyTime y especifica una ruta de acceso, un nombre de archivo y una marca recursiva; sin embargo, no tienen que coincidir con un conjunto de archivos incluido en ningún componente.

De hecho, un escritor puede agregar un archivo que no se agregó previamente a uno de sus conjuntos de componentes (por IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVssCreateWriterMetadata::AddFilesToFileGroup) a la copia de seguridad como un archivo diferenciado. Los nuevos archivos agregados a la copia de seguridad de esta manera deben estar en un volumen que ya se esté copiando en la sombra para esta copia de seguridad.

Normalmente, un escritor también especificará una hora de última modificación al agregar un archivo con diferencia, en función del mecanismo de historial propio del escritor. Esta última hora de modificación, si se especifica, siempre debe ser utilizada por los solicitantes para determinar si un archivo debe incluirse en una copia de seguridad incremental o diferencial.

Un escritor puede optar por no especificar una hora de última modificación al agregar un archivo diferenciado a un conjunto de copia de seguridad incremental o diferencial. Si este es el caso, los solicitantes pueden usar sus propios mecanismos (por ejemplo, registros de copias de seguridad anteriores o información del sistema de archivos) para determinar si el archivo con diferencias debe incluirse en una copia de seguridad incremental o diferencial.

Se omite el tipo de copia de seguridad de especificación de archivo de cualquier archivo diferente.

Stamps de copia de seguridad

Los escritores que admiten sellos de copia de seguridad (VSS_BS_TIMESTAMP) tienen su propio formato privado para almacenar información sobre cuándo se produjo por última vez una copia de seguridad. El escritor genera esta información durante la copia de seguridad.

La marca de copia de seguridad se almacena en el documento componentes de copia de seguridad como una cadena por el método IVssComponent::SetBackupStamp . La marca de copia de seguridad se aplica a todos los conjuntos de archivos del componente (o conjunto de componentes) correspondientes a la instancia de IVssComponent.

Si un solicitante tiene acceso a la marca de copia de seguridad de una copia de seguridad anterior, la habrá puesto a disposición del escritor llamando a IVssBackupComponents::SetPreviousBackupStamp.

A continuación, un escritor puede examinar esta marca de tiempo mediante IVssComponent::GetPreviousBackupStamp.

Tenga en cuenta que el solicitante simplemente almacena y devuelve la cadena que contiene la marca de copia de seguridad. No sabe nada sobre el formato de la cadena o cómo usarlo; solo el escritor tiene esa información.

Un escritor puede optar por actualizar la marca de copia de seguridad actual mediante IVssComponent::SetBackupStamp después de llamar a IVssComponent::GetPreviousBackupStamp, con lo que se registra en su propio formato la fecha de la operación de copia de seguridad incremental o diferencial actual.