Generazione di un set di ripristino
Un set di ripristino è un elenco di tutti i file da ripristinare e i percorsi in cui verranno ripristinati.
Come quando si genera l'elenco di file di backup (vedere Generazione di un set di backup), un algoritmo per determinare i file da ripristinare e dove ripristinarli deve procedere con l'istanza del writer per istanza del writer e in base a un componente per ogni istanza del writer.
È necessario associare ogni file al supporto di backup con il componente che lo ha gestito. È anche necessario ottenere il metodo di ripristino del componente di gestione e le informazioni di destinazione di ripristino del file e i relativi mapping di percorso alternativi (se presente).
Alcuni file possono richiedere anche operazioni di file parziali o destinazioni dirette per il ripristino.
Esaminando la selezionabilità dei componenti per i percorsi di backup e logici (vedere Uso della selezionabilità e dei percorsi logici), un richiedente è in grado di determinare la struttura dei componenti dell'operazione di backup che verrà ripristinata.
Con la struttura del componente del backup stabilita, il richiedente può ottenere informazioni sul set di file di ogni componente (specifica del file, percorso e flag di ricorsione). Un richiedente può quindi generare un set di ripristino.
I file che richiedono file parziali o destinazioni dirette forniscono istruzioni di ripristino dettagliate (vedere Percorsi di backup e ripristino non predefiniti), che possono quindi essere aggiunti al set di ripristino.
Un meccanismo tipico per la generazione di un set di ripristino per i file non coinvolti nelle operazioni di file parziali o le destinazioni dirette potrebbero procedere eseguendo le operazioni seguenti:
Ottenere un elenco di file nel supporto di backup, inclusi i percorsi originali.
Identificare la classe e il componente writer per ogni file nel supporto di backup eseguendo le operazioni seguenti:
Per ogni writer, ottenere informazioni sui componenti (IVssWMComponent) chiamando IVssExamineWriterMetadata::GetComponent in tutti i relativi componenti.
Per ogni componente, ottenere informazioni sul descrittore di file (IVssWMFiledesc) per ogni set di file che il componente contiene (a seconda dei tipi di dati che il componente contiene chiamando IVssWMComponent::GetFile, IVssWMComponent::GetDatabaseFile e IVssWMComponent: :GetDatabaseLogFile.
Confrontare le informazioni relative al nome e al percorso del file restituite dalle informazioni sul percorso contenute nel descrittore di file per ogni set di file in un componente (restituito da IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec e IVssWMFiledesc:: GetRecursive) sulle informazioni sul percorso dei file archiviati per determinare se il file fa parte del componente.
Nota
È consigliabile ignorare tutte le informazioni sul percorso alternativo nel descrittore di file recuperato da un componente trovato in un documento di metadati writer archiviato, ovvero IVssWMFiledesc::GetAlternateLocation non restituisce NULL. Questo percorso alternativo è il percorso alternativo, usato solo durante il backup.
Ottenere informazioni di mapping alternative per ogni file nel supporto di backup:
- I mapping di file alternativi vengono archiviati nel writer, non a livello di componente e vengono ottenuti dall'oggetto IVssWMFiledesc restituito da IVssExamineWriterMetadata::GetAlternateLocationMapping.
- È possibile determinare se un determinato file ha un mapping di percorso alternativo controllando il percorso e il nome del file rispetto al percorso e alla specifica del file contenuti nel mapping percorso alternativo restituito da IVssExamineWriterMetadata::GetAlternateLocationMapping, tramite IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec e IVssWMFiledesc::GetRecursive. Se durante il backup è stato usato un percorso alternativo, tali informazioni devono essere ignorate durante l'elaborazione di un ripristino.
- Se un file e un mapping di percorsi alternativi corrispondono ai descrittori di file, usare il metodo IVssWMFiledesc::GetAlternateLocation dell'oggetto IVssWMFiledesc restituito da IVssExamineWriterMetadata::GetAlternateLocationMapping per trovare il percorso alternativo a cui è possibile ripristinare il file.
- Il mapping di percorso alternativo ottenuto in questo modo non è necessariamente d'accordo con quello restituito dal documento Componenti di backup di IVssComponent::GetAlternateLocationMapping. Il valore IVssWMFiledesc::GetAlternateLocation non èblank solo se il mapping del percorso alternativo viene usato per un file.
Con queste informazioni sui file e sui componenti, è possibile eseguire query sul documento Componenti di backup per ottenere informazioni sulle destinazioni di ripristino, sulle opzioni e sui nuovi percorsi di ripristino per ogni file. Queste informazioni possono essere combinate con l'elenco di file, componenti e percorsi alternativi.
I file non protetti dai writer possono essere selezionati in modo coerente con le operazioni di ripristino tradizionali.
A questo punto, un richiedente deve avere un elenco di tutti i file da ripristinare, insieme alle istruzioni su come ripristinarli e può iniziare a ripristinare i file sulla base di:
- Se i mapping di percorsi alternativi o il percorso del file originale devono essere usati come destinazione per il ripristino dipenderà dalla presenza o dall'assenza di un file in corrispondenza del percorso di destinazione e delle impostazioni del componente di VSS_RESTORE_TARGET e VSS_RESTOREMETHOD_ENUM (vedere Percorsi di backup e ripristino non predefiniti).
- Se un tentativo di ripristino ha esito positivo dipenderà da problemi quali le autorizzazioni di accesso della destinazione, se i file di destinazione sono bloccati e altri problemi convenzionali coinvolti nel ripristino dei file.
- L'esito positivo o negativo del ripristino di un determinato componente per un'istanza di writer specificata deve essere mantenuta nel documento Componenti di backup chiamando IVssBackupComponents::SetFileRestoreStatus. In questo modo le informazioni saranno accessibili ai writer quando elaborano l'evento PostRestore.
- Se un file viene ripristinato in un mapping di percorso alternativo, il richiedente deve chiamare IVssBackupComponents::AddAlternativeLocationMapping. Ciò consentirà agli autori di determinare se i file sono stati ripristinati in percorsi alternativi tramite IVssComponent::GetAlternateLocationMapping.
- I richiedenti possono trovare il ripristino dei file in posizioni completamente nuove. Questo è accettabile, ma il richiedente deve indicare questo al writer usando il metodo IVssBackupComponents::AddNewTarget .