Condividi tramite


Uso delle destinazioni dirette

Il meccanismo di destinazione diretto consente ai writer di eseguire nuovamente il mapping dei file in fase di ripristino. Ciò consente ai writer di eseguire le operazioni seguenti:

  • Specificare nuove posizioni di destinazione (analogamente agli IVssBackupComponents::AddNewTarget) di un richiedente.
  • Recuperare spazio su disco ripristinando solo le parti necessarie di un file su disco, in particolare quando è stato eseguito il backup di un file usando il meccanismo di file parziale .
  • Modificare il formato del file in modo da soddisfare le esigenze correnti.

Qualsiasi file da usare con un'operazione di destinazione diretta deve avere una destinazione di ripristino di VSS_RT_DIRECTED.

Dopo aver stabilito che un richiedente può supportare un'operazione di destinazione diretta, un writer (durante la gestione dell'evento PreRestore ) usa IVssComponent::AddDirectedTarget per l'istanza di IVssComponent corrispondente al componente che gestisce il file (o il componente che definisce il set di componenti che contiene il file) per definire il modo in cui il file deve essere ripristinato.

Nell'uso di IVssComponent::AddDirectedTarget, i writer specificano il nome e il percorso del file usati per eseguire il backup del file, il nome e il percorso della destinazione del ripristino (questi valori possono essere uguali al nome e al percorso del file originale) e agli intervalli di file di origine e di destinazione.

Come per le operazioni di file parziali, gli elenchi di intervalli sono coppie di offset nel file da eseguire il backup (in byte) e la lunghezza della sezione da ripristinare (in byte), l'offset e la lunghezza separati da due punti e ogni coppia separata da una virgola: Offset1**:Length1,** Offset2**:**Length2. Ogni valore è un intero a 64 bit in formato esadecimale o decimale.

Se un writer deve usare il meccanismo di destinazione diretto per avere il richiedente ripristinare un file in una nuova posizione, avrebbe chiamato IVssComponent::AddDirectedTarget con il nome e il percorso del file originale e il nuovo nome file e il nuovo percorso e specificare gli intervalli di destinazione di origine con un offset zero e una lunghezza uguale a quella dell'intera dimensione del file.

Ad esempio, se un writer deve avere un file 200K, C:\WriterData\Index.dat, ripristinato come C:\WriterData\OldIndex.dat, la stringa dell'intervallo di origine e di destinazione sarà "0:204880".

Per eseguire il mapping di un file di grandi dimensioni, parzialmente sottoposto a backup, il richiedente userà l'intervallo di origine usato per eseguire il backup del file e un intervallo di destinazione che ridurrà le dimensioni del file. Le informazioni sull'intervallo di origine possono essere ottenute usando IVssComponent::GetPartialFile per l'istanza di IVssComponent corrispondente al componente che gestisce il file (o il componente che definisce il set di componenti contenente il file).

Se il file parzialmente sottoposto a backup è stato inizialmente un file di grandi dimensioni il cui intestazione, byte 64-512, contiene un conteggio dei record e altre informazioni aggiornate di frequente e i cui dati più recenti devono essere trovati negli ultimi 65536 byte, ovvero byte 0x1239E8577A a 0x1239E7577A, un writer potrebbe specificare un elenco di intervalli di origine come stringa "64:448,0x1239E8577A:65536".

Se il writer voleva eseguire il mapping del file ripristinato per contenere solo l'intestazione e i dati più recenti, l'elenco di intervalli potrebbe essere la stringa "0:488,488:65536".

Prima di eseguire effettivamente un'operazione di ripristino, un richiedente deve verificare se i file richiedono il supporto di destinazione diretto.

A tale scopo, il richiedente esegue prima l'iterazione dei writer con componenti archiviati nel documento Componenti di backup usando IVssBackupComponents::GetWriterComponentsCount e IVssBackupComponents::GetWriterComponents.

L'interfaccia IVssBackupComponents::GetWriterComponents viene quindi usata per restituire istanze dell'interfaccia IVssWriterComponentsExt, che fornisce IVssWriterComponentsExt::GetComponent e IVssWriterComponentsExt::GetComponentCount che consentono al richiedente di ottenere istanze IVssComponent.

Ciò consente a un richiedente di ottenere candidati di destinazione indirizzati usando IVssComponent::GetDirectedTargetCount e IVssComponent::GetDirectedTarget per l'istanza di IVssComponent corrispondente al componente che gestisce il file (o il componente che definisce il set di componenti che contiene il file).