Поделиться через


Создание набора для восстановления

Набор восстановления — это список всех восстанавливаемых файлов и расположений, в которых они будут восстановлены.

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

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

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

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

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

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

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

  1. Получите список файлов на носителе резервной копии, включая исходные пути к ним.

  2. Определите класс и компонент модуля записи для каждого файла на носителе резервного копирования, выполнив следующие действия.

    • Для каждого модуля записи получите сведения о компоненте (IVssWMComponent), вызвав метод IVssExamineWriterMetadata::GetComponent для всех его компонентов.

    • Для каждого компонента получите сведения о дескрипторове файла (IVssWMFiledesc) для каждого набора файлов, содержащихся в компоненте (в зависимости от типов данных, содержащихся в компоненте, путем вызова IVssWMComponent::GetFile, IVssWMComponent::GetDatabaseFile и IVssWMComponent::GetDatabaseLogFile.

    • Сравните имя и путь файла со сведениями о пути, содержащимися в дескрипторе файла для каждого набора файлов в компоненте (возвращаемых IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec и IVssWMFiledesc::GetRecursive) со сведениями о пути к сохраненным файлам, чтобы определить, является ли файл частью компонента.

      Примечание

      Следует игнорировать любые альтернативные сведения о расположении в дескрипторе файла, полученном из компонента, найденного в сохраненном документе метаданных модуля записи (то есть IVssWMFiledesc::GetAlternateLocation не возвращает значение NULL). Это альтернативное расположение является альтернативным путем, который используется только во время резервного копирования.

       

  3. Получите сведения о альтернативном сопоставлении для каждого файла на носителе резервного копирования:

    • Альтернативные сопоставления файлов хранятся на уровне модуля записи, а не компонента, и извлекаются из объекта IVssWMFiledesc , возвращаемого IVssExamineWriterMetadata::GetAlternateLocationMapping.
    • Вы можете определить, есть ли у определенного файла альтернативное сопоставление расположения, проверив путь и имя файла в спецификации пути и файла, которые содержатся в сопоставлении альтернативного расположения, возвращаемом IVssExamineWriterMetadata::GetAlternateLocationMapping, с помощью IVssWMFiledesc::GetPath, IVssWMFiledesc::GetFilespec и IVssWMFiledesc::GetRecursive. (Если во время резервного копирования использовался альтернативный путь, эти сведения следует игнорировать во время этого проверка при обработке восстановления.)
    • Если дескрипторы файла и альтернативного расположения совпадают, используйте метод IVssWMFiledesc::GetAlternateLocation объекта IVssWMFiledesc , возвращаемого IVssExamineWriterMetadata::GetAlternateLocationMapping , чтобы найти альтернативное расположение, в которое можно восстановить файл.
    • Сопоставление альтернативного расположения, полученное таким образом, не обязательно согласуется с сопоставлением, возвращенным из документа компонентов резервного копирования методом IVssComponent::GetAlternateLocationMapping. Значение IVssWMFiledesc::GetAlternateLocation не являетсяпустыми, только если для файла используется альтернативное сопоставление расположения.
  4. С помощью этих сведений о файлах и компонентах можно запросить документ компонентов резервного копирования, чтобы получить сведения о целевых объектах восстановления, параметрах и новых расположениях восстановления для каждого файла. Эти сведения можно объединить со списком файлов, компонентов и альтернативных расположений.

  5. Файлы, не защищенные средствами записи, можно выбирать в соответствии с традиционными операциями восстановления.

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

  • Будет ли использоваться альтернативное сопоставление расположения или исходное расположение файла в качестве целевого объекта для восстановления, зависит от наличия или отсутствия файла в этом целевом расположении и параметров компонентов VSS_RESTORE_TARGET и VSS_RESTOREMETHOD_ENUM (см. раздел Расположения резервного копирования и восстановления, отличные от расположения резервного копирования и восстановления по умолчанию).
  • Успешность попытки восстановления зависит от таких проблем, как разрешения доступа целевого объекта, блокировка целевых файлов и другие обычные проблемы, связанные с восстановлением файлов.
  • Успешное или неудачное восстановление заданного компонента для заданного экземпляра модуля записи должно быть сохранено в документе Компонентов резервного копирования путем вызова IVssBackupComponents::SetFileRestoreStatus. Это сделает эту информацию доступной для авторов при обработке события PostRestore.
  • Если файл восстанавливается в альтернативное сопоставление расположения, инициатор запроса должен вызвать IVssBackupComponents::AddAlternativeLocationMapping. Это позволит авторам определить, были ли их файлы восстановлены в альтернативных расположениях с помощью IVssComponent::GetAlternateLocationMapping.
  • Инициаторам запроса может потребоваться восстановить файлы в совершенно новых расположениях. Это допустимо, но инициатор запроса должен указать это средству записи с помощью метода IVssBackupComponents::AddNewTarget .