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

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

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

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