Определение компонентов по записи

Компоненты определяются и создаются модулями записи в документе метаданных записи в ответ на событие Identify в начале операции резервного копирования (см. обзор инициализации резервной копии) при заполнении документа метаданных записи.

При создании компонента в документе метаданных модуля записи с помощью IVssCreateWriterMetadata и IVssCreateWriterMetadata::AddComponent модуль записи должен указать следующее:

  • Возможность выбора компонента для резервного копирования
  • Тип компонента
  • Имя компонента (которое должно быть уникальным не только в пределах заданного экземпляра модуля записи, но и во всех экземплярах модуля записи).
  • Указывает, связана ли с компонентом какие-либо метаданные, связанные с модулем записи
  • Требуется ли записи уведомление после успешного резервного копирования

При необходимости в записи можно указать:

  • Логический путь компонента (который должен быть уникальным не только в пределах заданного экземпляра модуля записи, но и для всех экземпляров модуля записи).
  • Описание компонента (или подпись)
  • Значок, используемый с графическими интерфейсами для указания компонента

Компонент не обязательно содержать какие-либо файлы. Этот тип пустого или "фиктивного" компонента может быть полезен для упорядочения компонентов. Такой компонент можно использовать для определения набора компонентов и компонента модуля записи (см. раздел Логический путь компонентов).

Настройка организации компонентов

Настройка возможности выбора компонента (его выбор для резервного копирования и выборка для восстановления) и его логических путей позволяет средству записи налагать или делать необязательным включение определенных компонентов в операции резервного копирования или восстановления, а также группировать компоненты в наборы компонентов с одним выбираемым компонентом, выступающим в качестве точки входа для всей группы.

Членство в этих группах определяет, какие компоненты будут использоваться во время операций резервного копирования и восстановления. Используя значение "selectable" для выбора для операции резервного копирования и для восстановления для операции восстановления, разработчики должны понимать следующее:

  • Если выполняется резервное копирование каких-либо компонентов, управляемых данным модулем записи, инициатор запроса должен явным образом включить все неизбираемые компоненты без доступных для выбора предков в логический путь к документу компонентов резервного копирования, а также выполнить резервное копирование и восстановление этих компонентов в виде группы.
  • Запрашивающий имеет возможность явно добавлять доступные компоненты в документ компонентов резервного копирования во время операций резервного копирования и восстановления; После добавления компонента необходимо создать резервную копию или восстановить.
  • Если компонент доступен для выбора, компонент и все его подкомпоненты (как определено логическими путями) образуют набор компонентов, который может рассматриваться как единая единица, которая при необходимости может участвовать в операциях резервного копирования и восстановления.
  • Инициатор запроса никогда явно не добавляет неизбираемый компонент с доступными для выбора предками( подкомпонент в наборе компонентов) в документ компонентов резервного копирования во время операций резервного копирования и восстановления. Эти компоненты должны быть включены неявно , если их доступный для выбора предок добавлен явным образом. В этом случае их необходимо создать резервную копию или восстановить (см. раздел Использование компонентов инициатором запроса).
  • Компонент, доступный для выбора, с выбираемым предком по-прежнему является подкомпонентом (членом набора компонентов) и может быть неявно включен, если его выбираемый предок явно включен в операцию. В этом случае сведения о ней не добавляются в документ по компонентам резервного копирования. Если его доступный для выбора предок не включен в операцию, компонент можно явно выбрать для включения в операцию. В этом случае его сведения включаются в документ по компонентам резервного копирования.
  • Подкомпонент, неявно включенный в резервную копию, может быть явно включен в операцию восстановления независимо от состояния любого выбранного предка, если он доступен для восстановления. Сведения о любом компоненте, который можно выбрать для восстановления, включаемом во время операции восстановления, должны быть добавлены в документ По компонентам резервного копирования.
  • Модуль записи, у которого не было компонентов, явно добавленных в документ компонентов резервного копирования до создания событий PrepareForBackup и PreRestore , не будет получать дальнейшие события VSS.

Дополнительные сведения см. в статье Работа с возможностью выбора и логическими путями.

Добавление файлов в компонент

Компонент содержит сведения о файле в виде набора файлов , содержащего:

  • Корневой каталог файлов в компоненте.
  • Спецификация файла для файлов в компоненте.
  • Флаг, указывающий, является ли спецификация компонента рекурсивной.

В зависимости от типа компонента, который может быть базой данных или группой файлов, а также (в случае компонентов базы данных) от того, являются ли загружаемые файлы данными или файлами журналов, модуль записи вызывает IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles или IVssCreateWriterMetadata::AddDatabaseLogFiles для добавления набора файлов.

При использовании этих функций следует указать файлы для добавления в набор файлов следующим образом:

  • wszPath. Это путь к каталогу, который содержит файлы для добавления в набор файлов. Если параметру bRecursive присвоено значение true, параметр wszPath указывает иерархию каталогов для рекурсивного обхода, и все каталоги должны быть повторно созданы, включая пустые каталоги.
  • wszFilespec: эта строка указывает файлы в каждом каталоге, добавляемые в набор файлов.

Например, предположим, что существует следующая структура каталогов:

C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt C:\Directory1\\Directory3\\

Если модуль записи указывает "C:\Directory1" для wszPath, "File1.*" для wszFilespec и true для bRecursive, инициатор запроса должен включать следующие файлы:

C:\\Directory1\\File1.txt C:\\Directory1\\Directory2\\File1.txt

Если модуль записи вместо этого указывает "C:\Directory1" для wszPath, "*" для wszFilespec и true для bRecursive, инициатор запроса должен включать следующие файлы:

C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt

Если модуль записи указывает "C:\Directory1" для wszPath, "*" для wszFilespec и false для bRecursive, инициатор запроса должен включать следующие файлы:

C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt

Во всех предыдущих примерах каждый раз, когда модуль записи указывает значение true для bRecursive, необходимо повторно создать пустой каталог C:\Directory1\Directory3\.

Для набора файлов, добавленного в компонент группы файлов, в случаях, когда файлы, находящиеся на диске, не находятся в том расположении, которое модуль записи считает подходящим или стандартным расположением, модуль записи может добавить альтернативный путь. В таких случаях определение пути набора файлов содержит обычное расположение файлов и расположение файлов, в котором необходимо восстановить файлы, а альтернативный путь — текущее расположение файлов для резервного копирования.

Все файлы в наборе файлов должны существовать во время резервного копирования. Инициаторы запроса должны предполагать, что для резервного копирования требуются все файлы, перечисленные в наборе файлов, и в случае отсутствия каких-либо файлов произойдет сбой резервной копии. Обратите внимание, что если для параметра wszFilespec указано "*", он может соответствовать нулю или нескольким файлам.

Обратите внимание, что такие атрибуты документа метаданных модуля записи, как сопоставления альтернативных расположений, явно включенные и исключенные файлы и методы восстановления задаются на уровне записи, а не на уровне компонента. (Дополнительные сведения см. в статье Работа с документом метаданных записи.)

Определение компонента для операций резервного копирования и восстановления

Операции восстановления и резервного копирования обязательно создают событие Identify, и для резервного копирования и восстановления оно будет обрабатываться тем же методом CVssWriter::OnIdentify .

Во время операций резервного копирования инициаторы запроса используют сведения, возвращаемые методами CVssWriter::OnIdentify модуля записи, чтобы определить, какие записи присутствуют в системе, а затем определить, какие из файлов для резервного копирования.

Во время операций восстановления информация, возвращаемая событием CVssWriter::OnIdentify модуля записи, используется только для установления удостоверения и состояния записи, присутствующих в системе в данный момент; сведения о спецификации файла, созданные во время восстановления, не используются. Вместо этого для получения этих данных используются документы метаданных записи, хранящиеся во время резервного копирования.

После создания во время операции резервного копирования сведения о компоненте записи вместе с остальными данными модуля записи сохраняются для получения для поддержки операций восстановления. Как правило, за хранение этих сведений отвечает инициатор запроса.