c++ - 卷影复制 (VSS)

标签 c++ recursion shadow-copy

谁能澄清一个问题?我在自制备份实用程序*中使用 VSS API(使用 VSS2008 的 C++ 和在 XP SP3 上运行的最新 SDK)。

VSS 快照操作适用于没有子文件夹的文件夹 - 即我的电子邮件和 SQL 服务器卷。但是,当我为包含子文件夹的文件夹拍摄快照时,嵌套结构在快照中“扁平化”-所有子目录都不复存在。

所以问题来了:我知道 XP 上对 VSS 的支持有点受限,但是有没有一种方法可以将快照指定为非递归的?文档不是很有用......

  • 我真的厌倦了需要大量成本并且每隔几天就会出故障的 buggy 垃圾,所以我想我会自己动手。它会在某个时候进入 CodeProject。如果有人有兴趣让我知道,准备好后你可以得到一份(源)拷贝......

感谢++

杰瑞

最佳答案

你的问题令人困惑...

VSS 在“文件夹”级别不起作用。它的工作原理是“音量”级别。

你“捕捉”一个卷,你将有一个设备路径,你可以使用文件系统 api(它将自动将设备卷与文件系统挂载)一个文件一个文件地“打开”,或者你可以直接访问设备(逐个部门)。

备份快照设备卷上的所有文件应该很容易(不要忘记所有文件流和 NTFS 文件的 ACL),您的问题将是恢复它们...VSS 不会帮助您恢复.主要问题是恢复系统卷,您将需要另一个操作系统来启动,如 WinPE 或 DOS 或其他。如果您不担心系统容量,那么恢复会很容易。

如果您按扇区备份数据,那么您将获得额外的好处,如果您为它编写一个卷设备驱动程序(看起来像一个卷或 HD),那么 Windows 将为其自动加载一个文件系统驱动程序。这为您提供了一个免费的资源管理器应用程序,这是大多数基于扇区的备份应用程序所做的。它还为他们提供了 VM 的可能性。

即使您正在做简单的文件备份,了解文件系统(NTFS、FAT 等)也有助于您了解可以/应该备份和恢复的内容。你知道什么是 NTFS 重解析点吗?如果在备份过程中撞到一个,您将如何处理?您知道 Windows 实际上是如何启动的吗?您需要备份、恢复和“修补”哪些文件才能有机会启动。在还原时,如何最好地布置 NTFS 卷,以免影响还原卷上的 NTFS 性能?您是否要支持将系统卷恢复到新硬件,这需要您做什么才能有机会工作?问题无穷无尽。

系统备份/恢复并不容易,有很多边缘情况(请参阅上面的一些问题)你不知道,直到你遇到它们。

祝你的项目好运,我希望我没有让你失望太多,我只是说要交付大多数人都不知道的备份应用程序还有很多工作要做。

关于c++ - 卷影复制 (VSS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/692848/

相关文章:

c++ - 为什么我在 C 中使用 openMP 时无法在 for 循环中定义数据类型?

c++ - 将带双引号的字符串替换为带双引号的字符串

algorithm - 如何使用内存计算递归的时间复杂度?

.net - 为默认AppDomain设置卷影复制的正确方法是什么

c++ - 尝试运行卷影复制时出现运行时错误 "procedure entry not found in vssapi.dll"

c++ - 怎么样! (模板<std::size_t 大小>)

python - 获取一串数字并插入 + 和 - 运算符

javascript - Angular 中的 ng-repeat 递归

c# - AppDomain 卷影复制不起作用(原始程序集已锁定)

c++ - 如何将着色器嵌入到 UWP-DLL 库中?