Жизненный цикл документа компонентов резервного копирования
Инициаторы запроса несут основную ответственность за жизненный цикл документа компонентов резервного копирования.
Этот элемент управления осуществляется экземпляром объекта интерфейса IVssBackupComponents , возвращенного CreateVssBackupComponents.
Инициатор запроса должен инициализировать документ компонентов резервной копии перед резервной копией или восстановлением, вызвав IVssBackupComponents::InitializeForBackup или IVssBackupComponents::InitializeForRestore. Инициатор запроса может инициализировать документ как пустой или загрузить ранее сохраненную копию документа.
Для операций резервного копирования документ компонентов резервного копирования обычно инициализируется как пустой. Его данные будут заполнены в сотрудничестве с авторами системы в ходе обработки резервной копии.
Для операций восстановления документ компонентов резервного копирования обычно инициализируется из сохраненного документа, созданного во время первоначального резервного копирования. Это позволяет восстановить (в сочетании с изучением хранимых документов метаданных модуля записи), чтобы определить, какие данные были изначально резервные копии и как их следует восстановить.
Резервное копирование переносимых теневых копий является исключением из этого правила. В этом случае теневая копия могла быть перемещена из одной системы (где она была создана вместе с исходным документом компонентов резервного копирования) в другую путем переназначения логической единицы общего запоминающего устройства. Для резервного копирования в таких случаях инициатор запроса загружает сохраненное состояние резервного копирования и начинает работу с того места, где была отключена исходная система. (Дополнительные сведения см. в разделе Импорт переносимых теневых копируемых томов.)
В процессе обработки резервной копии инициатор запроса решает, какие компоненты следует копировать, исходя из того, какие компоненты помечаются как доступные для резервного копирования, логические пути компонента и его собственная внутренняя логика.
Некоторые компоненты будут явно включены в операцию резервного копирования; сведения о компоненте будут добавлены в документ По компонентам резервного копирования. Другие будут неявно включены в резервную копию; сведения о добавленных компонентах не будут добавлены в документ по компонентам резервного копирования.
Все компоненты записи, которые не могут быть выбраны для компонентов резервного копирования без выбранного предка в их логическом пути, и те, которые можно выбрать для компонентов резервного копирования, выбираемых инициатором запроса, будут добавлены явным образом.
Компоненты резервного копирования, которые не могут быть выбраны, можно добавить неявно, если в их логическом пути есть выбираемый предок, который явно включен в резервную копию. Эти компоненты (подкомпоненты) являются членами наборов компонентов , определенных их выбираемым предком.
При обработке операций восстановления запрашивающий объект использует возможность выбора для восстановления вместо возможности выбора для резервного копирования в сочетании со сведениями о логическом пути и собственной внутренней логикой, чтобы решить, какие файлы следует восстановить.
Если компонент, который был неявно добавлен в резервную копию, теперь должен быть явно добавлен к восстановлению, инициатор запроса обновит документ компонентов резервной копии, указав сведения об этом компоненте.
Сведения о хранимых компонентах доступны как инициаторам запроса, так и авторам через экземпляры интерфейса IVssComponent .
Именно через интерфейсы IVssComponent модули записи могут запрашивать и (до конца событий PostSnapshot и PostRestore ) изменять сведения в документе компонентов резервного копирования.
При вызове обработчика событий CVssWriter::OnPrepareBackup, CVssWriter::OnPreRestore, CVssWriter::OnPostSnapshot, CVssWriter::OnBackupComplete или CVssWriter::OnPostRestore модуль записи получает экземпляр интерфейса IVssWriterComponents .
Обратите внимание, что при создании события BackupComplete документ компонентов резервного копирования становится доступным только для чтения, поэтому CVssWriter::OnBackupComplete не может использовать интерфейс IVssComponent для его изменения.
Из интерфейса IVSSWriterComponents модуль записи может получить экземпляры интерфейса IVssComponent , что позволит ему получить доступ ко всем его компонентам, явно добавленным в документ компонентов резервного копирования, и изменить их состояние. Дополнительные сведения см. в разделах Общие сведения об обработке резервной копии в VSS и Обзор обработки восстановления в VSS.
Документы компонентов резервного копирования удаляются из памяти при освобождении интерфейса IVssBackupComponents и должны храниться с помощью IVssBackupComponents::SaveAsXML, иначе все их данные будут потеряны.
Кроме того, при правильном освобождении документа IVssBackupComponents создается событие BackupShutdown и автоматическиосвобождаются теневые копии .