生成备份集

备份集是要备份的所有文件、其位置和备份方式的列表。

IVssBackupComponents::D oSnapshotSet 成功返回后,请求者必须使用卷影复制卷中包含的文件来生成要备份的文件的完整列表。

此外,请求者必须处理某些文件具有 备用路径 以及某些文件已被排除的可能性。

选择要备份的文件的算法应在 编写器实例 上按编写器实例,逐个组件 (还原期间的情况如下:请参阅 生成还原集) ,并可能继续执行以下操作:

  1. 确定包含编写器文件和相应设备对象的卷
  2. 使用文件信息 (包含在 IVssExamineWriterMetadata::GetExcludeFile 返回的 IVssWMFiledesc 对象中,) 使用 FindFileFirstFindFileFirstExFindNextFile 创建显式排除的文件列表。
  3. 使用 IVssExamineWriterMetadata::GetComponent 循环访问编写器的所有组件。 如果选择了可选组件,请使用 逻辑路径 获取组件集中与其关联的不可选择组件。 (请参阅 使用选择性和逻辑路径。)
  4. 通过使用与其包含的每个组件对应的 IVssWMComponent 接口获取每个选定组件中包含的文件集
  5. 根据需要使用 FindFileFirst、FindFileFirstExFindNextFile 生成规范中的文件列表。
  6. 根据上面生成的排除文件列表,检查从组件信息生成的列表中的每个文件。 应使用 IVssWMFiledesc::GetPath) 返回的文件 (的默认路径来完成此操作,而不是使用 IVssWMFiledesc::GetAlternateLocation) 返回的备用路径。 如果文件与排除列表匹配,则不会备份该文件。
  7. 使用备用路径选择备份 (的实际位置(如果已设置)
  8. 此时,文件及其位置的完整列表可用,可以开始备份。

为系统上存在的所有编写器生成初始备份集后,请求者随后会检查以下注册表项:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\FilesNotToBackup

请求者使用此密钥下的子项,如下所示:

  • 如果系统上存在编写器,并且有一个子项的名称与编写器的名称匹配,则必须忽略该子项。
  • 如果系统上存在编写器,但备份集中当前不存在,并且存在匹配的子项,则将排除子项数据中指定的任何文件,并且必须从备份集中删除。
  • 备份应用程序通过创建包含不得备份的文件的文件规范列表的 MULTI_SZ 值,将文件添加到子项数据中。 MULTI_SZ值中的每个字符串都应包含一个文件规范。
  • 文件规范可以包含 ? 和 * 通配符。 通过将 /s 追加到末尾,可将规范设置为递归。 例如,指定“%TEMP%\* /s”会导致不备份 %TEMP% 目录及其所有子目录中的所有文件。