перечисление VSS_RESTOREMETHOD_ENUM (vswriter.h)

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

Метод восстановления используется на уровне модуля записи и также называется исходным целевым объектом восстановления и обозначается VSS_RESTORE_TARGETзначением VSS_RT_ORIGINAL.

Синтаксис

typedef enum VSS_RESTOREMETHOD_ENUM {
  VSS_RME_UNDEFINED = 0,
  VSS_RME_RESTORE_IF_NOT_THERE,
  VSS_RME_RESTORE_IF_CAN_REPLACE,
  VSS_RME_STOP_RESTORE_START,
  VSS_RME_RESTORE_TO_ALTERNATE_LOCATION,
  VSS_RME_RESTORE_AT_REBOOT,
  VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE,
  VSS_RME_CUSTOM,
  VSS_RME_RESTORE_STOP_START
} ;

Константы

 
VSS_RME_UNDEFINED
Значение: 0
Метод восстановления не определен.


Это указывает на ошибку со стороны модуля записи.

Это значение не поддерживается для модулей записи express.
VSS_RME_RESTORE_IF_NOT_THERE
Инициатор запроса должен восстановить файлы выбранного компонента или набора компонентов, только если нет версий
эти файлы, находящиеся на диске в настоящее время.


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

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


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

Если определено сопоставление альтернативного расположения файла, файлы должны быть записаны в альтернативное расположение.
VSS_RME_STOP_RESTORE_START
Инициатор запроса должен выполнить операцию восстановления следующим образом:


  1. Отправьте событие PreRestore и дождитесь его обработки всеми средствами записи.

  2. Остановить службу.

  3. Восстановите файлы в исходное расположение.

  4. Перезапустите службу.

  5. Отправьте событие PostRestore и дождитесь его обработки всеми средствами записи.


Остановленная служба заранее указывает модуль записи при вызове метода IVssCreateWriterMetadata::SetRestoreMethod . Инициатор запроса может получить имя службы, вызвав метод IVssExamineWriterMetadata::GetRestoreMethod .

Обратите внимание, что если модуль записи размещается в остановленной службе, этот модуль записи не получит событие PostRestore , так как идентификатор экземпляра модуля записи изменяется при остановке и перезапуске службы.
VSS_RME_RESTORE_TO_ALTERNATE_LOCATION
Инициатор запроса должен восстановить файлы выбранного компонента или компонента, заданного в расположении, указанном в
альтернативное сопоставление расположения, указанное в файле метаданных компонента записи. (См. раздел
IVssCreateWriterMetadata::AddAlternateLocationMapping,
IVssComponent::GetAlternateLocationMapping,
IVssExamineWriterMetadata::GetAlternateLocationMapping,
и IVssWMFiledesc::GetAlternateLocation.)

Это значение не поддерживается для модулей записи express.
VSS_RME_RESTORE_AT_REBOOT
Инициатор запроса должен восстановить файлы выбранного компонента или набора компонентов после перезагрузки компьютера.


Восстанавливаемые файлы должны быть скопированы во временное расположение, и инициатор запроса должен использовать
MoveFileEx с
MOVEFILE_DELAY_UNTIL_REBOOT флаг, чтобы завершить восстановление этих файлов в их
правильное расположение после перезагрузки компьютера.
VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE
Если это возможно, инициатор запроса должен восстановить правильные файлы выбранного компонента или компонента.
расположение немедленно.


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

В этом случае восстанавливаемые файлы должны быть скопированы во временное расположение на диске, и инициатор запроса должен
используйте MoveFileEx с
MOVEFILE_DELAY_UNTIL_REBOOT флаг, чтобы завершить восстановление этих файлов в их
правильное расположение после перезагрузки компьютера.
VSS_RME_CUSTOM
Инициатор запроса должен использовать пользовательский метод восстановления для восстановления файлов, управляемых выбранным
компонент или набор компонентов.


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

Это значение не поддерживается для модулей записи express.
VSS_RME_RESTORE_STOP_START
Инициатор запроса должен выполнить операцию восстановления следующим образом:


  1. Отправьте событие PreRestore и дождитесь его обработки всеми средствами записи.

  2. Восстановите файлы в исходное расположение.

  3. Отправьте событие PostRestore и дождитесь его обработки всеми средствами записи.

  4. Остановить службу.

  5. Перезапустите службу.


Остановленная служба заранее указывается модулем записи при вызове метода IVssCreateWriterMetadata::SetRestoreMethod . Инициатор запроса может получить имя службы, вызвав метод IVssExamineWriterMetadata::GetRestoreMethod .

Комментарии

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

Инициатор запроса получает запрошенный метод восстановления модуля записи, вызывая метод IVssExamineWriterMetadata::GetRestoreMethod и действует соответствующим образом.

Метод восстановления применяется ко всем файлам во всех компонентах данного модуля записи.

Метод восстановления может быть переопределен на уровне компонентов во время восстановления, если модуль записи задает значение VSS_RESTORE_TARGET , отличное от VSS_RT_ORIGINAL с помощью IVssComponent::SetRestoreTarget.

Метод восстановления VSS_RME_RESTORE_TO_ALTERNATE_LOCATION без определения альтернативного сопоставления расположения представляет собой ошибку записи, и инициатор запроса должен сообщить об этом как таковой.

Если методу восстановления требуется проверка состояния файлов на диске (VSS_RME_RESTORE_IF_NOT_THERE, VSS_RME_RESTORE_IF_CAN_REPLACE или VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE), в идеале следует использовать операции ввода-вывода файлов, чтобы убедиться, что весь компонент можно восстановить, прежде чем приступить к восстановлению.

Самый безопасный способ сделать это — открыть исключительно (без совместного использования) все целевые файлы с помощью CreateFile перед восстановлением.

В случае VSS_RME_RESTORE_IF_NOT_THERE также следует установить флаг ликвидации создания CREATE_NEW .

Если открытые операции будут выполнены успешно, восстановление может продолжаться и использовать дескрипторы, возвращенные CreateFile , для записи восстановленных данных на диск.

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

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

В этом случае доступным, хотя и менее надежным вариантом является выполнение следующих действий:

  1. Скопируйте все файлы, находящиеся на диске, и их необходимо восстановить во временный кэш.
  2. Попробуйте заменить файлы, находящиеся на диске, на файлы с резервными копиями (которые могут находиться на диске во второй временной области или на носителе резервного копирования).
  3. Если какие-либо файлы не удается восстановить, завершите операцию восстановления и скопируйте исходные файлы обратно из их временного расположения и перейдите к альтернативному сопоставлению расположения или восстановлению при перезагрузке.
Дополнительные сведения о расположениях файлов резервного копирования и восстановления в VSS см. в разделе Расположения резервного копирования и восстановления, отличные от стандартных.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть vswriter.h

См. также раздел

IVssBackupComponents::AddAlternativeLocationMapping

IVssComponent::GetAlternateLocationMapping

IVssCreateWriterMetadata::AddAlternateLocationMapping

IVssCreateWriterMetadata::SetRestoreMethod

IVssExamineWriterMetadata::GetAlternateLocationMapping

IVssExamineWriterMetadata::GetRestoreMethod

IVssWMFiledesc::GetAlternateLocation

VSS_WRITERRESTORE_ENUM