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

Участие модуля записи в добавочных и разностных резервных копиях обычно происходит при обработке событий Identify (CVssWriter::OnIdentify), PrepareForBackup (CVssWriter:OnPrepareBackup) и PostSnapshot (CVssWriter:OnPostSnapshot). Способ участия модуля записи определяется тем, поддерживает ли он метки резервных копий и время последнего изменения, а также поддерживает ли инициатор запроса, выполняющий резервное копирование, частичные операции с файлами.

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

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

Модуль записи указывает, какие операции он поддерживает в документе метаданных модуля записи, создав битовую маску значений VSS_BACKUP_SCHEMA и передав ее в метод IVssCreateWriterMetadata::SetBackupSchema . В этом случае модуль записи может указать, поддерживает ли он следующее:

  • Добавочные резервные копии (VSS_BS_INCREMENTAL)
  • Разностные резервные копии (VSS_BS_DIFFERENTIAL)
  • Добавочные и разностные резервные копии не могут быть смешанными (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)
  • Добавочные и разностные резервные копии с помощью меток резервных копий (VSS_BS_TIMESTAMPED)
  • Добавочные и разностные резервные копии на основе сведений о последнем изменении файла (VSS_BS_LAST_MODIFY)

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

Модуль записи может задать маску типа резервной копии набора файлов при добавлении набора файлов в компонент, создав битовую маску значений VSS_FILE_SPEC_BACKUP_TYPE и передав ее в IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles или IVssCreateWriterMetadata::AddFilesToFileGroup.

Существует три обязательных значения перечисления 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. Таким образом, если разработчик модуля записи не решит не использовать значение по умолчанию (выбрав другой тип резервной копии спецификации файла, используя частичные операции с файлами или используя разностные файлы), файлы в большинстве наборов файлов обычно копируются целиком на резервный носитель.

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

Обработка событий PrepareForBackup во время добавочных и разностных резервных копий

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

Поскольку средства записи используют интерфейс IVssComponent , они обычно выполняют эти действия при обработке события PrepareForBackup .

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

Частичные файлы

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

Средства записи используют IVssComponent::AddPartialFile , чтобы указать эти части выбранных файлов для резервного копирования во время добавочной или разностной операции. Запрашивающие должны соблюдать эту спецификацию и всегда должны создавать резервные копии указанных разделов файлов. (Дополнительные сведения об операциях с частичными файлами см. в разделе "Работа с частичными файлами ".)

С помощью IVssComponent::AddPartialFile модуль записи может добавить файл в резервную копию, которая ранее не была добавлена в один из его наборов компонентов ( IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles или IVssCreateWriterMetadata::AddFilesToFileGroup) в виде частичного файла. Все новые файлы, добавленные в резервную копию таким образом, должны находиться на томе, который уже копируется теневыми копиями для этой резервной копии.

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

Разностные файлы

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

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

На самом деле модуль записи может добавить файл, не добавленный ранее в один из его наборов компонентов ( IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles или IVssCreateWriterMetadata::AddFilesToFileGroup) в качестве разностного файла. Все новые файлы, добавленные в резервную копию таким образом, должны находиться на томе, который уже копируется теневыми копиями для этой резервной копии.

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

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

Тип резервной копии спецификации файла любого разностного файла игнорируется.

Метки резервных копий

Записи, поддерживающие метки резервных копий (VSS_BS_TIMESTAMP), имеют собственный закрытый формат для хранения сведений о времени последнего создания резервной копии. Эти сведения создаются средством записи во время резервного копирования.

Метка резервного копирования хранится в документе компонентов резервного копирования в виде строки с помощью метода IVssComponent::SetBackupStamp. Метка резервного копирования применяется ко всем наборам файлов в компоненте (или наборе компонентов), соответствующему экземпляру IVssComponent.

Если запрашивающий объект имеет доступ к метке резервной копии предыдущей резервной копии, она сделает ее доступной для модуля записи путем вызова IVssBackupComponents::SetPreviousBackupStamp.

После этого модуль записи может изучить метку времени с помощью IVssComponent::GetPreviousBackupStamp.

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

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