Роль инициатора запроса в добавочных и разностных резервных копиях VSS

Для поддержки операции добавочного или разностного резервного копирования запрашивающий объект должен выполнить следующее:

  1. Определите, какая степень поддержки модуля записи доступна (с помощью IVssBackupComponents::GetWriterMetadata для получения доступа к информации в документах метаданных записи) — в частности, определите, какая схема резервного копирования поддерживается (VSS_BACKUP_SCHEMA).
  2. Задайте соответствующее состояние резервного копирования.
  3. Получение спецификаций уровня файлов и наборов файлов для добавочной или разностной резервной копии.
  4. Выполните резервное копирование.

Определение инкрементной и разностной поддержки и конфигурации инициатора запроса

Инициатору запроса необходимо получить сведения о поддержке модуля записи, прежде чем выбирать компоненты для включения в добавочную или разностную резервную копию или задавать собственное состояние.

Определение поддержки модуля записи

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

Маска схемы резервного копирования модуля записи, поддерживающая добавочные или разностные методы VSS, будут содержать либо VSS_BS_INCREMENTAL, либо VSS_BS_DIFFERENTIAL, либо оба метода. Авторы также могут указывать ограничения на их участие с флагом VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL . (Дополнительные сведения о схемах резервного копирования см. в VSS_BACKUP_SCHEMA ).

Настройка состояния резервного копирования инициатора запроса

Инициатор запроса указывает, что резервная копия является добавочной или разностной, задав тип резервного копирования как VSS_BT_INCREMENTAL , так и VSS_BT_DIFFERENTIAL с помощью метода IVssBackupComponents::SetBackupState перед созданием события PrepareForBackup .

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

Получение спецификаций модуля записи для добавочных и разностных резервных копий

Сведения о спецификации резервного копирования файлов на уровне файлов (VSS_FILE_SPEC_BACKUP_TYPE), содержащиеся в документе метаданных модуля записи, доступны для проверки после успешного возвращения IVssBackupComponents::CollectWriterMetadata.

Однако модуль записи может добавлять разностные файлы или запрашивать поддержку частичных файлов до тех пор, пока не будет выполнена успешная обработка события PostSnapshot .

Разностная спецификация поддержки файлов и частичной поддержки файлов может переопределить тип резервной копии спецификации файла, поэтому инициаторы запросов могут отложить полный анализ всех спецификаций модуля записи о добавочных и разностных резервных копиях до тех пор, пока после успешного возвращения IVssBackupComponents::P repareForBackup.

Получение сведений о спецификации резервного копирования файлов

Сведения о спецификации резервного копирования файлов на уровне файлов (VSS_FILE_SPEC_BACKUP_TYPE) содержатся в документе метаданных модуля записи и могут быть рассмотрены сразу после успешного возвращения IVssBackupComponents::CollectWriterMetadata.

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

Запрашивающий объект может определить, какой документ метаданных записи записи должен запрашиваться с помощью IVssBackupComponents::GetWriterComponentsCount и IVssBackupComponents::GetWriterComponents. Экземпляр интерфейса IVssWriterComponentsExt , возвращаемого IVssBackupComponents::GetWriterComponents , предоставляет сведения о записи с помощью метода IVssWriterComponentsExt::GetWriterInfo .

Инициатор запроса получает сведения о компоненте через экземпляры интерфейса IVssWMComponent , соответствующего включенной компоненту, управляемому заданным средством записи, с помощью IVssExamineWriterMetadata::GetComponent.

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

Эти вызовы могут возвращать экземпляры интерфейса IVssWMFiledesc для каждого набора файлов компонента.

Тип резервной копии спецификации файла набора файлов получается путем вызова IVssWMFiledesc::GetBackupTypeMask.

Получение сведений о частичном файле и разностных файлах

Запрашивающий объект получает частичные и разностные сведения о файле через интерфейс IVssComponent .

Инициатор запроса может выполнять итерацию по всем записям, включенным в резервную копию, с помощью IVssBackupComponents::GetWriterComponentsCount и IVssBackupComponents::GetWriterComponents.

Экземпляр интерфейса IVssWriterComponentsExt , возвращаемого IVssBackupComponents::GetWriterComponents , предоставляет доступ ко всем экземплярам интерфейса IVssComponent , соответствующим явно включенным компонентам модуля записи через методы IVssWriterComponentsExt::GetComponent иIVssWriterComponentsExt::GetComponentsExt::GetComponentCount .

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

Частичные сведения о файле получаются путем вызова IVssComponent::GetPartialFileCount и IVssComponent::GetPartialFile (см. раздел "Работа с частичными файлами").

Для модулей записи, которые поддерживают операции резервного копирования на основе данных последнего изменения файла (записи, маски схемы резервной копии которых возвращаются IVssExamineWriterMetadata::GetBackupSchema, включают VSS_BS_LAST_MODIFY), разностные сведения о файле получаются путем вызова IVssComponent::GetDifferencedFilesCount и IVssComponent::GetDifferencedFile.

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

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

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

Реализация добавочных или разностных резервных копий

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

Неподдерживающие записи

Записи, схема которых не поддерживает добавочную или разностную резервную копию (записи, маски схемы резервного копирования которых возвращаются IVssExamineWriterMetadata::GetBackupSchema, включают VSS_BS_INCREMENTAL , если тип резервного копирования VSS_BT_INCREMENTAL или не включает VSS_BS_DIFFERENTIAL , если тип резервного копирования VSS_BS_DIFFERENTIAL) не может обеспечить прямую поддержку добавочной или разностной операции резервного копирования.

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

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

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

Поддержка модулей записи

Инициатору запроса необходимо обработать (по порядку) все разностные файлы модуля записи, а затем обрабатывать все частичные запросы файлов, а затем создавать резервные копии оставшихся файлов в соответствии с типом резервной копии спецификации файла (VSS_FILE_SPEC_BACKUP_TYPE).

  1. Резервное копирование разностных файлов:

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

    IVssComponent::GetDifferencedFile также может возвращать время последнего изменения (выраженное в виде структуры FILETIME ).

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

    Например, если время последнего изменения файла, возвращенное средством записи, было следующим:

    • После последней полной резервной копии файл должен быть включен в добавочные и разностные резервные копии.
    • После последней полной резервной копии, но до последней добавочной резервной копии файл должен быть включен в операции добавочного резервного копирования, но не в разностные резервные копии.

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

  2. Использование частичных операций с файлами:

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

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

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

  3. Работа с типом резервной копии спецификации файла:

    Обработав все разностные файлы и частичные операции с файлами, инициатор запроса теперь обрабатывает все остальные файлы в резервном наборе на основе типа резервной копии спецификации файла (VSS_FILE_SPEC_BACKUP_TYPE).

    Существует три обязательных значения перечисления VSS_FILE_SPEC_BACKUP_TYPE , влияющих на разностные и добавочные резервные копии:

    • VSS_FSBT_ALL_BACKUP_REQUIRED
    • VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
    • VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

    Существует три обязательных значения теневого копирования:

    • VSS_FSBT_ALL_SNAPSHOT_REQUIRED
    • VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
    • VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

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

    Флаг "Требуется резервное копирование", применяемый к операциям резервного копирования INCREMENTAL, DIFFERENTIAL или ALL, указывает, что модуль записи ожидает, что копия текущей версии набора файлов будет доступна после восстановления любой операции резервного копирования. Как правило, это означает, что если набор файлов помечен как "требуется резервное копирование", запрашивающий будет копировать все его члены на резервный носитель во время добавочной или разностной резервной копии независимо от времени последнего резервного копирования или изменения.

    По умолчанию наборы файлов добавляются в компоненты с типом резервной копии спецификации файла VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED. Таким образом, если модуль записи явно не задает тип резервного копирования спецификации файла, запрашивающие файлы должны копировать эти файлы, не обрабатываемые частичными операциями с файлами, или назначенные разностные файлы в большинстве наборов файлов обычно копируются целиком на резервный носитель.

Резервные метки

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

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

Поддержка модулей записи сохраняет метку резервного копирования в документе компонентов резервного копирования в виде строки с помощью метода IVssComponent::SetBackupStamp.

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