Определение компонентов по записи
Компоненты определяются и создаются записи в документе метаданных записи в ответ на событие Определить событие в начале операции резервного копирования (см. обзор инициализации резервного копирования) при заполнении документа метаданных записи.
При создании компонента в документе метаданных записи с помощью IVssCreateWriterMetadata и IVssCreateWriterMetadata::AddComponentнеобходимо указать:
- Можно ли выбрать компонент для резервного копирования
- Тип компонента
- Имя компонента (которое должно быть уникальным не только в заданном экземпляре записи, но и во всех экземплярах записи).
- Связана ли компонент с любыми метаданными, связанными с этим средством записи.
- Требуется ли запись уведомления после успешного резервного копирования
При необходимости записи можно указать:
- логический путь компонента (который должен быть уникальным не только в данном экземпляре записи, но и во всех экземплярах записи).
- Описание компонента (или подпись)
- Значок, используемый с ГРАФИЧЕСКИми интерфейсами, чтобы указать компонент
Компоненту не требуется содержать файлы. Этот тип пустого или "фиктивного" компонента может быть полезен в организации компонентов. Такой компонент можно использовать для определения набора компонентов и компонента записи (см. логический путь компонентов).
Настройка организации компонентов
Задание выбора компонента (его возможность выбора для резервного копирования, а также возможность выбора для восстановления) и логических путей позволяет записи запрашивать или делать необязательное включение определенных компонентов в операцию резервного копирования или восстановления, а также группировать компоненты в наборы компонентов с одним настраиваемым компонентом, действующим в качестве точки входа ко всему. группа.
Членство в этих группах определяет, какие компоненты будут использоваться во время операций резервного копирования и восстановления. Используя "selectable" для выбора для операции резервного копирования, и можно выбрать для восстановления для операции восстановления, разработчики должны понимать, что:
- Если какие-либо компоненты, управляемые заданным средством записи, создают резервную копию, то запрашивающий объект должен явно включать все неизбираемые компоненты без выбора предков в их логический путь документу компонентов резервного копирования и резервному копированию и восстановлению этих компонентов в качестве группы.
- Запроситель имеет возможность явного добавления настраиваемых компонентов в документ компонентов резервного копирования во время операций резервного копирования и восстановления; После добавления компонент должен быть резервирован или восстановлен.
- Если компонент доступен для выбора, компонент и все его вложенные компоненты (как определено логическими путями) образуют набор компонентов, который можно рассматривать как единую единицу, которая может при необходимости участвовать в операциях резервного копирования и восстановления.
- Запрашивающий объект никогда явно не добавляет неизбираемый компонент с настраиваемыми предками, подкомпонентом в наборе компонентов, в документ компонентов резервного копирования во время операций резервного копирования и восстановления. Эти компоненты должны быть неявно включены, если их настраиваемый предок явно добавлен, в этом случае они должны быть резервированы или восстановлены (см. использование компонентовзапросителя).
- Настраиваемый компонент с настраиваемым предком по-прежнему является субкомпонентной (член набора компонентов) и может быть неявно включен, если его настраиваемый предок явно включен в операцию. В этом случае его сведения не добавляются в документ компонентов резервного копирования. Если его выбранный предок не включен в операцию, компонент можно явно выбрать для включения в операцию, в этом случае его сведения включены в документ компонентов резервного копирования.
- Подкомпонент, неявно включенный в резервную копию, может быть явно включен в операцию восстановления независимо от состояния любого выбранного предка, если он можно выбрать для восстановления. Любой доступный для восстановления вложенный компонент, включенный во время операции восстановления, должен содержать сведения, добавленные в документ компонентов резервного копирования.
- Модуль записи, не имеющий явного компонента, добавленного в документ компонентов резервного копирования до создания PrepareForBackup и события PreRestore не будут получать никаких дополнительных событий VSS.
Дополнительные сведения см. в разделе Работа с возможностью выбора и логическими путями.
Добавление файлов в компонент
Компонент содержит сведения о файле в виде набора файлов , содержащего:
- Корневой каталог файлов компонента.
- Спецификация файла для файлов в компоненте.
- Флаг, указывающий, является ли спецификация компонента рекурсивной.
В зависимости от типа компонента, который может быть базой данных или группой файлов, и (в случае компонентов базы данных), являются ли загруженные файлы данными или файлами журнала, средство записи вызывает вызовы IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFilesили IVssCreateWriterMetadata::AddDatabaseLogFiles для добавления набора файлов.
При использовании этих функций необходимо указать файлы, которые нужно добавить в набор файлов следующим образом:
- wszPath: это путь к каталогу, который содержит файлы, добавляемые в набор файлов. Если для параметра bRecursive задано значение true 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\Directory3\.
Для набора файлов, добавленного в компонент группы файлов, в случаях, когда файлы, находящиеся на диске, не находятся в том месте записи, который будет рассматриваться в соответствующем или стандартном расположении, средство записи может добавить альтернативный путь. В таких случаях определение набора файлов содержит нормальное расположение файлов и место восстановления файлов, а альтернативный путь содержит текущее расположение файлов для резервного копирования.
Все файлы в наборе файлов должны существовать во время резервной копии. Запрашивающие должны предположить, что для резервного копирования требуются все файлы, перечисленные в наборе файлов, и завершится сбоем резервной копии, если отсутствуют файлы. Обратите внимание, что при указании "*" для параметра wszFilespec он может соответствовать нулю или нескольким файлам.
Обратите внимание, что такие атрибуты документа метаданных записи в качестве альтернативных сопоставлений расположений, явно включенные и исключенные файлы, а методы восстановления задаются на уровне записи, а не на уровне компонента. (Дополнительные сведения см. в разделе Работа с документом метаданных записи.)
Определение компонента для операций резервного копирования и восстановления
Операции восстановления и резервного копирования обязательно создают определить событие, а для резервного копирования и восстановления он будет обрабатываться тем же методом CVssWriter::OnIdentify.
Во время операций резервного копирования запрашивающие используют сведения, возвращаемые CVssWriter::OnIdentify методы, чтобы определить, какие записи присутствуют в системе, а затем определить, какие из их файлов необходимо выполнить резервное копирование.
Во время операций восстановления данные, возвращаемые CVssWriter::OnIdentify, используются только для установления удостоверения и состояния записей, присутствующих в настоящее время в системе; Сведения о спецификации файла, созданные во время восстановления, не используются. Вместо этого документы метаданных записи, хранящиеся во время резервного копирования, используются для получения этих данных.
После создания во время операции резервного копирования сведения о компоненте записи вместе с остальными сведениями о записи сохраняются для поддержки операций восстановления. Как правило, запроситель несет ответственность за хранение этих сведений.