Общие сведения о подготовке к восстановлению

При подготовке к восстановлению запрашивающий объект использует хранимые документы метаданных модуля записи в сочетании с собственным документом компонентов резервной копии, чтобы определить, что и как следует восстановить. Дополнительные сведения см. в разделе Общие сведения об обработке восстановления в VSS.

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

После этого у инициатора запроса достаточно информации, чтобы определить, какие файлы необходимо восстановить, а также где и как их следует восстановить. (Дополнительные сведения см. в разделе Создание набора для восстановления.)

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

Действие инициатора запроса Событие Действие записи
Извлеките из документа Компоненты резервного копирования сведения о компонентах , явно включенных в операцию резервного копирования (см. раздел IVssBackupComponents::GetWriterComponents) Изучите извлеченные документы метаданных модуля записи, чтобы получить сведения об этих компонентах, явно включенных в резервную копию, и о любых неявно включенных подкомпонентах. (См . раздел IVssExamineWriterMetadata, IVssWMComponent.)
Нет Нет
Выберите восстанавливаемые компоненты и наборы компонентов (см. раздел IVssBackupComponents::SetSelectedForRestore и IVssBackupComponents::AddRestoreSubcomponent.) Нет Нет
Инициатор запроса позволяет модулю записи обновлять документ компонентов резервной копии и при необходимости может сообщить модулям записи любые специальные параметры восстановления. (См . раздел IVssBackupComponents::SetRestoreOptions, IVssBackupComponents::AddNewTarget и IVssBackupComponents::P reRestore.) Предварительное хранилище Модуль записи определяет участие в восстановлении, подготавливает файлы к восстановлению и при необходимости изменяет документ компонентов резервной копии при необходимости. (См . статью CVssWriter::OnPreRestore, IVssComponent, IVssComponent::IsSelectedForRestore, IVssComponent::GetRestoreOptions, IVssComponent::SetRestoreTarget, IVssComponent::SetRestoreMetadata, IVssComponent::AddDirectedTarget.)
Инициатор запроса ожидает записи, чтобы обработать событие PreRestore с помощью IVssAsync. Он также должен проверять состояние записи. (См. раздел IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus.) Нет Нет

 

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

Чтобы определить, какие компоненты являются кандидатами для восстановления, инициатор запроса должен выполнить следующие действия:

Для этого инициатору запроса необходимо изучить явно включенные компоненты в хранимом документе о компонентах резервного копирования. Эти сведения о компонентах доступны в режиме записи с помощью IVssBackupComponents::GetWriterComponents, который возвращает экземпляры интерфейса IVssWriterComponentsExt , из которого можно получить сведения о записи и экземпляры интерфейса IVssComponent .

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

Количество компонентов, которыми управляет каждый модуль записи, возвращается IVssExamineWriterMetadata::GetFileCounts. Затем инициатор запроса может использовать IVssExamineWriterMetadata::GetComponent , чтобы получить интерфейс IVssWMComponent для каждого компонента, которым управляет модуль записи.

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

Инициаторы запроса указывают в документе Компоненты резервного копирования, требуется ли явное восстановление компонента с помощью IVssBackupComponents::SetSelectedForRestore или IVssBackupComponents::AddRestoreSubcomponents. Выбор метода будет зависеть от того, как изначально было выполнено резервное копирование компонента, и от его выбора для восстановления. Эти компоненты, явно включенные для восстановления, определяют другие компоненты, которые неявно включены (дополнительные сведения см. в разделе Работа с возможностью выбора для восстановления и подкомпонентов ).

Инициатор запроса может явным образом включить ни один из компонентов модуля записи, выполняющего в настоящее время, для восстановления с помощью IVssBackupComponents::SetSelectedForRestore или IVssBackupComponents::AddRestoreSubcomponents. В этом случае модуль записи не будет получать события VSS для оставшейся части операции восстановления.

Явное использование IVssBackupComponents::SetSelectedForRestore или IVssBackupComponents::AddRestoreSubcomponent для выбора компонента модуля записи, который в данный момент не выполняется, возвращает ошибку VSS_E_OBJECT_NOT_FOUND. Сведения о восстановлении данных отсутствующих модулей записи см. в статье Восстановление без участия модуля записи.

Чтобы модуль записи мог иметь полную информацию о том, с какой стороны следует действовать, параметры восстановления для модуля записи и указание добавочного восстановления можно отправлять модулям записи путем вызовов инициатора запроса к IVssBackupComponents::SetRestoreOptions и IVssBackupComponents::SetAdditionalRestores соответственно.

На этом этапе инициатор запроса завершил подготовку и создает событие PreRestore путем вызова IVssBackupComponents::P reRestore, что позволяет записи подготовиться к фактическому восстановлению.

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

Подготовка записи к операции восстановления выполняется при обработке события PreRestore с помощью виртуального метода CVssWriter::OnPreRestore. Реализация по умолчанию просто возвращается без каких-либо действий. Записи могут переопределить реализацию по умолчанию, чтобы обеспечить больший контроль с помощью:

Обработчик событий CVssWriter::OnPreRestore получает экземпляр IVssWriterComponents, из которого он может получить интерфейсы IVssComponent для тех из его компонентов, которые явно включены в документ компонентов резервного копирования во время резервного копирования.

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

Метод IVssComponent::IsSelectedForRestore используется для определения необходимости восстановления компонента резервного копирования.

Чтобы определить, был ли подкомпонент резервной копии явно включен в восстановление, модули записи используют IVssComponent::GetRestoreSubcomponent.

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

  • Получение и выполнение любых параметров записи или инициатора запроса, управляющих операциями восстановления (см. раздел IVssComponent::GetRestoreOptions)
  • Закрытие и запись всех открытых в данный момент файлов
  • Обновление целевого объекта восстановления (например, для принудительного восстановления до альтернативного сопоставления расположения). См. раздел IVssComponent::SetRestoreTarget.
  • Обмен данными с инициатором запроса через частные метаданные (см. раздел IVssComponent::SetRestoreMetadata)
  • Указывает, что файл должен быть восстановлен путем повторного сопоставления с помощью определения целевых объектов (см. раздел IVssComponent::AddDirectedTarget)

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