Ruolo writer nei backup incrementali e differenziali vss

La partecipazione di un writer ai backup incrementali e differenziali avviene in genere durante la gestione degli eventi Identify (CVssWriter::OnIdentify), PrepareForBackup (CVssWriter:OnPrepareBackup) e PostSnapshot (CVssWriter:OnPostSnapshot). La modalità di partecipazione di un writer dipende dal fatto che supporti i timbri di backup e gli ultimi tempi di modifica e se il richiedente che esegue il backup supporti operazioni parziali sui file.

Gestione degli eventi di identificazione durante i backup incrementali e differenziali

Durante la gestione dell'evento Identify, i writer stabiliscono l'architettura di base per l'operazione di backup incrementale e differenziale tramite lo schema di backup (VSS_BACKUP_SCHEMA) e le maschere del tipo di backup delle specifiche dei file (VSS_FILE_SPEC_BACKUP_TYPE).

Un writer indica le operazioni supportate nel documento di metadati writer creando una maschera di bit di valori VSS_BACKUP_SCHEMA e passandola al metodo IVssCreateWriterMetadata::SetBackupSchema . Con questo, un writer può indicare se supporta quanto segue:

  • Backup incrementali (VSS_BS_INCREMENTAL)
  • Backup differenziali (VSS_BS_DIFFERENTIAL)
  • I backup incrementali e differenziali non possono essere misti (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)
  • Backup incrementali e differenziali tramite stamp di backup (VSS_BS_TIMESTAMPED)
  • Backup incrementali e differenziali sulla base delle informazioni sull'ultima modifica di un file (VSS_BS_LAST_MODIFY)

I writer usano la maschera del tipo di backup delle specifiche del file per fornire ai richiedenti informazioni sul livello del set di file su come includere i file in un backup incrementale o differenziale.

Un writer può impostare la maschera del tipo di backup della specifica di file di un set di file quando aggiunge il set di file a un componente creando una maschera di bit di valori VSS_FILE_SPEC_BACKUP_TYPE e passandola a IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVssCreateWriterMetadata::AddFilesToFileGroup.

Esistono tre valori "necessari per il backup" dell'enumerazione VSS_FILE_SPEC_BACKUP_TYPE che influiscono sui backup differenziali e incrementali:

  • VSS_FSBT_ALL_BACKUP_REQUIRED
  • VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

Sono disponibili tre valori di copia shadow obbligatori:

  • VSS_FSBT_ALL_SNAPSHOT_REQUIRED
  • VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

I set di file contrassegnati con un tipo di backup della specifica di file "copia shadow obbligatoria" indicano se un richiedente deve copiare i dati da una copia shadow durante l'esecuzione di operazioni di backup INCREMENTAL, DIFFERENZIALE o ALL (che include operazioni di backup incrementali e differenziali).

Il flag "backup obbligatorio", applicato alle operazioni di backup INCREMENTAL, DIFFERENTIAL o ALL, indica che il writer prevede che sia disponibile una copia della versione corrente del set di file dopo il ripristino di qualsiasi operazione di backup. In genere, ciò significa che se un set di file viene contrassegnato con "backup richiesto", tutti i relativi membri verranno copiati nel supporto di backup durante un backup incrementale o differenziale, indipendentemente dal momento in cui si è verificato il backup o la modifica dell'ultima volta.

Per impostazione predefinita, i set di file vengono aggiunti ai componenti con un tipo di backup di VSS_FSBT_ALL_BACKUP_REQUIRED VSS_FSBT_ALL_SNAPSHOT_REQUIRED | . Pertanto, a meno che uno sviluppatore non decida di usare l'impostazione predefinita (scegliendo un altro tipo di backup delle specifiche di file, usando operazioni di file parziali o usando file con differenze), i file nella maggior parte dei set di file verranno in genere copiati nel loro intero supporto di backup.

A questo punto, il documento di metadati writer del writer è completamente popolato con la maggior parte delle informazioni che un richiedente dovrà avviare un backup differenziale o incrementale. Durante l'evento PrepareForBackup verrà gestita la specifica del set di file o delle informazioni a livello di file per supportare il backup.

Gestione degli eventi PrepareForBackup durante i backup incrementali e differenziali

Prima che il richiedente proceda con l'operazione di backup effettiva, i writer possono modificare la specifica di un backup incrementale o differenziale modificando il documento componenti di backup del richiedente tramite l'interfaccia IVssComponent .

Poiché i writer usano l'interfaccia IVssComponent , in genere eseguono queste operazioni durante la gestione dell'evento PrepareForBackup .

In CVssWriter:OnPrepareBackup i writer possono specificare più precisamente il modo in cui alcuni file devono essere valutati per il backup, specificare i meccanismi da usare per il backup e eventualmente impostare i timbri di backup.

File parziali

Se un richiedente li supporta, un writer può scegliere di implementare un backup incrementale o differenziale usando operazioni di file parziali. Gli autori possono determinare se un richiedente supporta operazioni di file parziali chiamando CVssWriter::IsPartialFileSupportEnabled.

I writer usano IVssComponent::AddPartialFile per indicare le parti dei file selezionati di cui eseguire il backup durante l'operazione incrementale o differenziale. I richiedenti devono rispettare questa specifica e devono eseguire sempre il backup delle sezioni specificate dei file. Per altre informazioni sulle operazioni parziali sui file, vedere Uso di file parziali.

Usando IVssComponent::AddPartialFile, un writer può aggiungere un file al backup non aggiunto in precedenza a uno dei relativi set di componenti (da IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVssCreateWriterMetadata::AddFilesToFileGroup) come file parziale. Tutti i nuovi file aggiunti al backup in questo modo devono trovarsi in un volume che è già in fase di copia shadow per questo backup.

Se un file è coinvolto con operazioni di file parziali, sostituisce qualsiasi tipo di backup della specifica di file, che viene ignorato.

File con differenze

I writer che supportano uno schema di backup modificato (VSS_BS_SCHEMA) possono aggiungere file con differenze a un backup incrementale o differenziale.

Se si specifica un file con differenze, un writer usa IVssComponent::AddDifferencedFileByLastModifyTime e specifica un percorso, un nome file e un flag ricorsivo, ma questi non devono corrispondere a un set di file incluso in alcun componente.

Infatti, un writer può aggiungere un file non aggiunto in precedenza a uno dei relativi set di componenti (da IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVssCreateWriterMetadata::AddFilesToFileGroup) al backup come file diverso. Tutti i nuovi file aggiunti al backup in questo modo devono trovarsi in un volume che è già in fase di copia shadow per questo backup.

In genere, un writer specifica anche un'ora dell'ultima modifica quando si aggiunge un file diverso, in base al meccanismo di cronologia del writer. L'ora dell'ultima modifica, se specificata, deve essere sempre utilizzata dai richiedenti per determinare se un file deve essere incluso in un backup incrementale o differenziale.

Un writer può scegliere di non specificare l'ora dell'ultima modifica quando si aggiunge un file con differenze a un set di backup incrementale o differenziale. In questo caso, i richiedenti sono liberi di usare i propri meccanismi, ad esempio i log dei backup o delle informazioni del file system precedenti, per determinare se il file con differenza deve essere incluso in un backup incrementale o differenziale.

Il tipo di backup delle specifiche del file di qualsiasi file diverso viene ignorato.

Timbri di backup

I writer che supportano i timbri di backup (VSS_BS_TIMESTAMP) hanno il proprio formato privato per l'archiviazione delle informazioni relative all'ultima esecuzione di un backup. Queste informazioni vengono generate dal writer durante il backup.

Il timbro di backup viene archiviato nel documento dei componenti di backup come stringa dal metodo IVssComponent::SetBackupStamp . Lo stamp di backup si applica a tutti i set di file nel componente (o nel set di componenti) corrispondente all'istanza di IVssComponent.

Se un richiedente ha accesso al timbro di backup di un backup precedente, lo avrà reso disponibile per il writer chiamando IVssBackupComponents::SetPreviousBackupStamp.

Un writer può quindi esaminare questo timestamp usando IVssComponent::GetPreviousBackupStamp.

Si noti che il richiedente archivia e restituisce la stringa contenente il timbro di backup. Non conosce nulla sul formato della stringa o su come usarlo; solo il writer dispone di tali informazioni.

Un writer può scegliere di aggiornare lo stamp di backup corrente usando IVssComponent::SetBackupStamp dopo aver chiamato IVssComponent::GetPreviousBackupStamp, registrando quindi nel proprio formato la data dell'operazione di backup incrementale o differenziale corrente.