Trabajar con destinos dirigidos

El mecanismo de destino dirigido permite a los escritores reasignar archivos en tiempo de restauración. Esto permite a los escritores hacer lo siguiente:

  • Especifique nuevas ubicaciones de destino (análogas a las IVssBackupComponents::AddNewTarget de un solicitante).
  • Recupere el espacio en disco restaurando solo las partes necesarias de un archivo en disco, especialmente cuando se realizó una copia de seguridad de un archivo mediante el mecanismo de archivo parcial .
  • Cambie el formato de archivo para satisfacer las necesidades actuales.

Cualquier archivo que se va a usar con una operación de destino dirigida debe tener un destino de restauración de VSS_RT_DIRECTED.

Una vez establecido que un solicitante puede admitir una operación de destino dirigida, un escritor (mientras controla el evento PreRestore ) usa IVssComponent::AddDirectedTarget para la instancia de IVssComponent correspondiente al componente que administra el archivo (o el componente que define el conjunto de componentes que contiene el archivo) para definir cómo se va a reasignar el archivo en la restauración.

En el uso de IVssComponent::AddDirectedTarget, los escritores especifican el nombre de archivo y la ruta de acceso usados para hacer una copia de seguridad del archivo, el nombre de archivo y la ruta de acceso de su destino de restauración (estos valores pueden ser los mismos que el nombre de archivo y la ruta de acceso originales) y los intervalos de archivos de origen y destino.

Al igual que con las operaciones parciales de archivos, las listas de intervalos son pares de desplazamientos en el archivo de los que se va a realizar una copia de seguridad (en bytes) y la longitud de la sección que se va a restaurar (en bytes), el desplazamiento y la longitud que se separan por dos puntos y cada par separados por una coma: Offset1**:Length1,** Offset2**:**Length2. Cada valor es un entero de 64 bits en formato hexadecimal o decimal.

Si un escritor necesita usar el mecanismo de destino dirigido para que el solicitante restaure un archivo en una nueva ubicación, habría llamado IVssComponent::AddDirectedTarget con el nombre y la ruta de acceso del archivo original y el nuevo nombre de archivo y ruta de acceso, y especificar los intervalos de destino de origen con un desplazamiento cero y una longitud igual a la del tamaño de archivo completo.

Por ejemplo, si un escritor necesita tener un archivo de 200 000, C:\WriterData\Index.dat, restaurado como C:\WriterData\OldIndex.dat, la cadena de intervalo de origen y destino sería "0:204880".

Para volver a asignar un archivo de copia de seguridad parcial grande, el solicitante usaría el intervalo de origen usado para hacer una copia de seguridad del archivo y un intervalo de destino que reducirá el tamaño del archivo. La información del intervalo de origen se puede obtener mediante IVssComponent::GetPartialFile para la instancia de IVssComponent correspondiente al componente que administra el archivo (o el componente que define el conjunto de componentes que contiene el archivo).

Si el archivo de copia de seguridad parcial era inicialmente un archivo grande cuyo encabezado, bytes 64-512, contiene un recuento de registros y otra información actualizada con frecuencia, y cuyos datos más recientes se encuentran en los últimos 65536 bytes del archivo: bytes 0x1239E8577A a 0x1239E7577A, un escritor podría especificar una lista de intervalos de origen como la cadena "64:448,0x1239E8577A:65536".

Si el escritor quería reasignar el archivo restaurado para que solo contenga el encabezado y los datos más recientes, la lista de intervalos podría ser la cadena "0:488,488:65536".

Antes de realizar realmente una operación de restauración, un solicitante debe comprobar si algún archivo requiere compatibilidad de destino dirigida.

Para ello, el solicitante recorre primero en iteración los escritores con componentes almacenados en su documento de componentes de copia de seguridad mediante IVssBackupComponents::GetWriterComponentsCount e IVssBackupComponents::GetWriterComponents.

La interfaz IVssBackupComponents::GetWriterComponents se usa para devolver instancias de la interfaz IVssWriterComponentsExt , que proporciona IVssWriterComponentsExt::GetComponent e IVssWriterComponentsExt::GetComponentCount que permiten al solicitante obtener instancias de IVssComponent .

Esto permite a un solicitante obtener candidatos de destino dirigidos mediante IVssComponent::GetDirectedTargetCount e IVssComponent::GetDirectedTarget para la instancia de IVssComponent correspondiente al componente que administra el archivo (o el componente que define el conjunto de componentes que contiene el archivo).