Writerrolle in inkrementellen und differenziellen VSS-Sicherungen

Die Teilnahme eines Schreibers an inkrementellen und differenziellen Sicherungen erfolgt in der Regel beim Behandeln von Identify-Ereignissen (CVssWriter::OnIdentify), PrepareForBackup (CVssWriter:OnPrepareBackup) und PostSnapshot (CVssWriter:OnPostSnapshot). Die Teilnahme eines Writers hängt davon ab, ob er Sicherungsstempel und letzte Änderungszeiten unterstützt und ob der Anfordernden, der die Sicherung ausführt, partielle Dateivorgänge unterstützt.

Behandeln von Identifizieren von Ereignissen während inkrementeller und differenzieller Sicherungen

Während der Behandlung des Identify-Ereignisses erstellen Autoren ihre grundlegende Architektur für inkrementelle und differenzielle Sicherungsvorgänge über die Masken sicherungsschema (VSS_BACKUP_SCHEMA) und Sicherungstyp der Dateispezifikation (VSS_FILE_SPEC_BACKUP_TYPE).

Ein Writer gibt an, welche Vorgänge er in seinem Writer Metadata Document unterstützt, indem er eine Bitmaske aus VSS_BACKUP_SCHEMA Werten erstellt und an die IVssCreateWriterMetadata::SetBackupSchema-Methode übergibt. Damit kann ein Writer angeben, ob er Folgendes unterstützt:

  • Inkrementelle Sicherungen (VSS_BS_INCREMENTAL)
  • Differenzielle Sicherungen (VSS_BS_DIFFERENTIAL)
  • Inkrementelle und differenzielle Sicherungen können nicht gemischt werden (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)
  • Inkrementelle und differenzielle Sicherungen mithilfe von Sicherungsstempeln (VSS_BS_TIMESTAMPED)
  • Inkrementelle und differenzielle Sicherungen auf Der Grundlage von Informationen über die letzte Änderung einer Datei (VSS_BS_LAST_MODIFY)

Autoren verwenden die Sicherungstypmaske der Dateispezifikation, um Anforderern Informationen zur Aufnahme von Dateien in eine inkrementelle oder differenzielle Sicherung bereitzustellen.

Ein Writer kann die Dateispezifikationstypmaske eines Dateisatzes festlegen, wenn er den Dateisatz einer Komponente hinzufügt, indem er eine Bitmaske mit VSS_FILE_SPEC_BACKUP_TYPE Werten erstellt und an IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles oder IVssCreateWriterMetadata::AddFilesToFileGroup übergeben.

Es gibt drei "Sicherungsanforderungen" Werte der VSS_FILE_SPEC_BACKUP_TYPE-Enumeration , die sich auf differenzielle und inkrementelle Sicherungen auswirken:

  • VSS_FSBT_ALL_BACKUP_REQUIRED
  • VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

Es gibt drei "Schattenkopie erforderlich"-Werte:

  • VSS_FSBT_ALL_SNAPSHOT_REQUIRED
  • VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

Dateisätze, die mit dem Sicherungstyp "Schattenkopie erforderlich" gekennzeichnet sind, geben an, ob ein Anforderer Daten aus einer Schattenkopie kopieren muss, wenn er INKREMENTelle, DIFFERENZIELLE oder ALL-Sicherungsvorgänge (einschließlich inkrementeller und differenzieller Vorgänge) ausführt.

Das Flag "Sicherung erforderlich", das auf INKREMENTELLE, DIFFERENZIELLE oder ALLE Sicherungsvorgänge angewendet wird, gibt an, dass der Writer erwartet, dass nach der Wiederherstellung eines Sicherungsvorgangs eine Kopie der aktuellen Version des Dateisatzes verfügbar ist. In der Regel bedeutet dies, dass, wenn ein Dateisatz mit "Sicherung erforderlich" gekennzeichnet ist, alle elemente während einer inkrementellen oder differenziellen Sicherung auf Sicherungsmedien kopiert werden, unabhängig davon, wann die Sicherung oder Änderung zuletzt erfolgt ist.

Standardmäßig werden Dateisätze Komponenten mit einem Sicherungstyp der Dateispezifikation VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED hinzugefügt. Daher werden die Dateien in den meisten Dateisätzen in der Regel vollständig auf Sicherungsmedien kopiert, es sei denn, ein Writer-Entwickler entscheidet sich nicht, den Standard zu verwenden (durch Auswahl eines anderen Sicherungstyps für die Dateispezifikation, die Verwendung partieller Dateivorgänge oder die Verwendung unterschiedlicher Dateien).

An diesem Punkt ist das Writer-Metadatendokument des Writer vollständig mit den meisten Informationen gefüllt, die ein Anforderer benötigt, um eine differenzielle oder inkrementelle Sicherung zu starten. Die zusätzliche Spezifikation von Dateisatz- oder Dateiebeneninformationen zur Unterstützung der Sicherung wird während des PrepareForBackup-Ereignisses verarbeitet.

Behandeln von PrepareForBackup-Ereignissen während inkrementeller und differenzieller Sicherungen

Bevor der Anforderer mit dem eigentlichen Sicherungsvorgang fortfährt, können Autoren die Spezifikation einer inkrementellen oder differenziellen Sicherung ändern, indem sie das Dokument der Sicherungskomponenten des Anforderers über die IVssComponent-Schnittstelle ändern.

Da die Autoren die IVssComponent-Schnittstelle verwenden, führen sie diese Vorbereitungen in der Regel beim Behandeln des PrepareForBackup-Ereignisses durch.

In CVssWriter:OnPrepareBackup können Writer genauer angeben, wie einige Dateien für die Sicherung ausgewertet werden sollen, welche Mechanismen zum Sichern verwendet werden sollen, und möglicherweise Sicherungsstempel festlegen.

Partielle Dateien

Wenn ein Anforderer sie unterstützt, kann ein Schreiber eine inkrementelle oder differenzielle Sicherung mithilfe von partiellen Dateivorgängen implementieren lassen. (Writer können feststellen, ob ein Anforderer partielle Dateivorgänge unterstützt, indem CVssWriter::IsPartialFileSupportEnabled aufgerufen wird.)

Writer verwenden IVssComponent::AddPartialFile , um die Teile der ausgewählten Dateien anzugeben, die während des inkrementellen oder differenziellen Vorgangs gesichert werden sollen. Anforderer müssen diese Spezifikation respektieren und immer die angegebenen Abschnitte der Dateien sichern. (Weitere Informationen zu partiellen Dateivorgängen finden Sie unter Arbeiten mit partiellen Dateien.)

Mit IVssComponent::AddPartialFile kann ein Writer der Sicherung eine Datei hinzufügen, die zuvor nicht zu einem ihrer Komponentensätze hinzugefügt wurde (von IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata:AddDatabaseLogFiles oder IVssCreateWriterMetadata::AddFilesToFileGroup) als Teildatei. Alle neuen Dateien, die der Sicherung auf diese Weise hinzugefügt werden, müssen sich auf einem Volume befinden, das bereits schattenkopiert wird.

Wenn eine Datei an partiellen Dateivorgängen beteiligt ist, ersetzt dies jeden Sicherungstyp der Dateispezifikation, der ignoriert wird.

Differenzierte Dateien

Autoren, die ein zuletzt geändertes Sicherungsschema (VSS_BS_SCHEMA) unterstützen, können einer inkrementellen oder differenziellen Sicherung differenzierte Dateien hinzufügen.

Beim Angeben einer differenzierten Datei verwendet ein Writer IVssComponent::AddDifferencedFileByLastModifyTime und gibt einen Pfad, einen Dateinamen und ein rekursives Flag an. Diese müssen jedoch nicht mit einem Dateisatz übereinstimmen, der in einer Komponente enthalten ist.

Tatsächlich kann ein Writer eine Datei hinzufügen, die zuvor nicht zu einem seiner Komponentensätze hinzugefügt wurde (von IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles oder IVssCreateWriterMetadata::AddFilesToFileGroup) zur Sicherung als differenzierte Datei. Alle neuen Dateien, die der Sicherung auf diese Weise hinzugefügt werden, müssen sich auf einem Volume befinden, das bereits schattenkopiert wird.

In der Regel gibt ein Writer auch einen Zeitpunkt der letzten Änderung an, wenn eine differenzierte Datei hinzugefügt wird – basierend auf dem eigenen Verlaufsmechanismus des Writers. Diese letzte Änderungszeit muss, sofern angegeben, immer von den Anforderern verwendet werden, um zu bestimmen, ob eine Datei in eine inkrementelle oder differenzielle Sicherung einbezogen werden muss.

Ein Writer kann beim Hinzufügen einer differenzierten Datei zu einem inkrementellen oder differenziellen Sicherungssatz möglicherweise keinen Zeitpunkt der letzten Änderung angeben. Wenn dies der Fall ist, können die Anforderer ihre eigenen Mechanismen verwenden – für instance, Protokolle früherer Sicherungen oder Dateisysteminformationen –, um zu bestimmen, ob die differenzierte Datei in eine inkrementelle oder differenzielle Sicherung einbezogen werden soll.

Der Sicherungstyp der Dateispezifikation einer beliebigen differenzierten Datei wird ignoriert.

Sicherungsstempel

Autoren, die Sicherungsstempel (VSS_BS_TIMESTAMP) unterstützen, verfügen über ein eigenes privates Format zum Speichern von Informationen darüber, wann eine Sicherung zuletzt durchgeführt wurde. Diese Informationen werden vom Writer während der Sicherung generiert.

Der Sicherungsstempel wird im Dokument sicherungskomponenten von der IVssComponent::SetBackupStamp-Methode als Zeichenfolge gespeichert. Der Sicherungsstempel gilt für alle Dateisätze in der Komponente (oder dem Komponentensatz), die dem instance des IVssComponent entsprechen.

Wenn ein Anforderer Zugriff auf den Sicherungsstempel einer vorherigen Sicherung hat, hat er ihn für den Writer verfügbar gemacht, indem er IVssBackupComponents::SetPreviousBackupStamp aufruft.

Ein Schreiber kann diesen Zeitstempel dann mithilfe von IVssComponent::GetPreviousBackupStamp untersuchen.

Beachten Sie, dass der Anforderer lediglich die Zeichenfolge mit dem Sicherungsstempel speichert und zurückgibt. Sie weiß nichts über das Format der Zeichenfolge oder deren Verwendung; nur der Writer verfügt über diese Informationen.

Ein Writer kann den aktuellen Sicherungsstempel mithilfe von IVssComponent::SetBackupStamp aktualisieren, nachdem er IVssComponent::GetPreviousBackupStamp aufgerufen hat, wodurch das Datum des aktuellen inkrementellen oder differenziellen Sicherungsvorgangs in seinem eigenen Format aufgezeichnet wird.