Arbeiten mit gerichteten Zielen

Der gerichtete Zielmechanismus ermöglicht es Autoren, Dateien zur Wiederherstellungszeit neu zuzuordnen. Dadurch können Autoren Folgendes tun:

  • Geben Sie neue Zielstandorte an (analog zum IVssBackupComponents::AddNewTarget eines Anforderers).
  • Stellen Sie Speicherplatz wieder her, indem Sie nur benötigte Teile einer Datei auf dem Datenträger wiederherstellen, insbesondere wenn eine Datei mithilfe des partiellen Dateimechanismus gesichert wurde.
  • Ändern Sie das Dateiformat, um die aktuellen Anforderungen zu erfüllen.

Jede Datei, die mit einem gerichteten Zielvorgang verwendet werden soll, muss ein Wiederherstellungsziel von VSS_RT_DIRECTED aufweisen.

Nachdem festgestellt wurde, dass ein Anforderer einen gerichteten Zielvorgang unterstützen kann, verwendet ein Writer (bei der Behandlung des PreRestore-Ereignisses) den IVssComponent::AddDirectedTarget für den instance von IVssComponent, der der Komponente entspricht, die die Datei verwaltet (oder die Komponente, die den Komponentensatz definiert, der die Datei enthält), um zu definieren, wie die Datei bei der Wiederherstellung neu zugeordnet werden soll.

Bei der Verwendung von IVssComponent::AddDirectedTarget geben Autoren den Dateinamen und Pfad an, die zum Sichern der Datei verwendet werden, den Dateinamen und pfad des Wiederherstellungsziels (diese Werte können mit dem ursprünglichen Dateinamen und dem ursprünglichen Pfad identisch sein) sowie Quell- und Zieldateibereiche.

Wie bei partiellen Dateivorgängen sind Bereichslisten Paare von Offsets in der zu sichernden Datei (in Bytes) und der Länge des wiederherzustellenden Abschnitts (in Bytes), der Offset und die Länge durch einen Doppelpunkt getrennt und jedes Paar durch ein Komma getrennt: Offset1**:Length1,** Offset2**:**Length2. Jeder Wert ist eine ganze 64-Bit-Zahl im Hexadezimal- oder Dezimalformat.

Wenn ein Writer den Mechanismus des gerichteten Ziels verwenden muss, damit der Anforderer eine Datei an einem neuen Speicherort wiederherstellen kann, hätte er IVssComponent::AddDirectedTarget mit dem ursprünglichen Dateinamen und Pfad sowie dem neuen Dateinamen und pfad aufgerufen und Quellzielbereiche mit einem Nulloffset und einer Länge angegeben, die der gesamten Dateigröße entspricht.

Wenn ein Writer für instance eine 200-K-Datei (C:\WriterData\Index.dat) als C:\WriterData\OldIndex.dat wiederhergestellt haben muss, lautet die Quell- und Zielbereichszeichenfolge "0:204880".

Um eine große, teilweise gesicherte Datei neu zuzuordnen, verwendet der Anforderer den Quellbereich, der zum Sichern der Datei verwendet wird, und einen Zielbereich, der die Dateigröße reduziert. Die Quellbereichsinformationen können mithilfe von IVssComponent::GetPartialFile für die instance von IVssComponent abgerufen werden, die der Komponente entspricht, die die Datei verwaltet (oder die Komponente, die den Komponentensatz definiert, der die Datei enthält).

Wenn die teilweise gesicherte Datei anfangs eine große Datei war, deren Header (Bytes 64-512) eine Datensatzanzahl und andere häufig aktualisierte Informationen enthält und deren neueste Daten in den letzten 65536 Bytes der Datei zu finden sind – Bytes 0x1239E8577A zu 0x1239E7577A, könnte ein Writer eine Quellbereichsliste als Zeichenfolge "64:448,0x1239E8577A:65536" angeben.

Wenn der Writer die wiederhergestellte Datei so neu zuordnen wollte, dass sie nur den Header und die neuesten Daten enthält, könnte die Bereichsliste die Zeichenfolge "0:488,488:65536" sein.

Vor der tatsächlichen Durchführung eines Wiederherstellungsvorgangs sollte ein Anforderer überprüfen, ob Dateien eine direkte Zielunterstützung erfordern.

Dazu durchläuft der Anforderer zunächst die Writer mit gespeicherten Komponenten in seinem Dokument für Sicherungskomponenten mithilfe von IVssBackupComponents::GetWriterComponentsCount und IVssBackupComponents::GetWriterComponents.

Die IVssBackupComponents-Schnittstelle::GetWriterComponents-Schnittstelle wird dann verwendet, um Instanzen der IVssWriterComponentsExt-Schnittstelle zurückzugeben, die IVssWriterComponentsExt::GetComponent und IVssWriterComponentsExt::GetComponentCount-Methoden bereitstellt, die es dem Anforderer ermöglichen , IVssComponent-Instanzen abzurufen.

Dadurch kann ein Anforderer direkte Zielkandidaten mithilfe von IVssComponent::GetDirectedTargetCount und IVssComponent::GetDirectedTarget für die instance von IVssComponent abrufen, die der Komponente entspricht, die die Datei verwaltet (oder die Komponente, die den Komponentensatz definiert, der die Datei enthält).