我的目标是使备份程序在使用VSS保持数据一致性的同时读取物理磁盘(具有NTFS分区)。
我将Windows api的功能CreateFile与'\。\ PhysicalDriveN'一起使用 如此处所述(基本上,它使我可以将磁盘作为大文件访问)
https://support.microsoft.com/en-us/help/100027/info-direct-drive-access-under-win32
对于测试,我使用此命令创建卷影
wmic shadowcopy call create Volume='C:\'
这是一个临时解决方案,我计划通过程序本身使用VSS
我的问题是: 如何存储卷影?它存储自卷影以来已修改的数据还是存储自上次卷影以来所做的修改?
在第一种情况下: 当我读取磁盘时,是否可以获得一致的数据(包括ntfs元数据文件)?
在另一种情况下: 我可以像访问磁盘/分区一样访问卷影吗? (以读取隐藏的元数据文件等)
-im目前正在使用Windows 7,但计划在Windows Server的不同版本上使用它
-我已经阅读了很多有关VSS的Microsoft文档,但是对我来说它的工作方式似乎还不清楚(如果您回答一个,请解释一下它的意思)
-i我知道卷影作为文件名为{3808876b-c176-4e48-b7ae-04046e6cc752}的文件存储在“系统卷信息”文件夹中
答案 0 :(得分:0)
“ 如何存储卷影?它存储自卷影以来已被修改的数据,还是存储自上次卷影以来所做的修改?”
硬件或软件卷影副本提供程序使用以下方法之一创建卷影副本:(msdn doc的答案)
完整副本:此方法可制作完整副本(称为“完整副本” 或“克隆”)在给定时间点的原始卷。这个副本 是只读的。
写时复制此方法不会复制原始卷。代替, 它通过复制所有更改来完成差异复制(完成写入 给定时间点后对卷发出的I / O请求。
写重定向该方法不会复制原始卷,并且 给定后它不会对原始音量进行任何更改 时间点。而是通过重定向来制作差异副本 所有更改更改为不同的音量。
“ 当我读取磁盘时,是否可以获得一致的数据(包括ntfs元数据文件)?”
即使应用程序未以独占模式打开其文件,由于打开,备份和关闭文件所需的时间有限,复制到存储介质上的文件可能也不会完全相同。应用状态。
“ 我可以像访问磁盘/分区一样访问卷影吗(以读取隐藏的元数据文件等)”
Requester Access to Shadow Copied Data
通过替换根获得卷影复制卷上的路径 设备对象的原始路径。例如,给定路径 在原始卷“ C:\ DATABASE * .mdb”和VSS_SNAPSHOT_PROP上 snapProp实例,您将获得复制的阴影上的路径 通过串联snapProp.m_pwszSnapshotDeviceObject,“ \”, 和“ \ DATABASE * .mdb”。
答案 1 :(得分:0)
因此,我进行了更多测试,实际上“阴影卷”是在块级别而非文件级别进行的。这意味着通过将createfile与路径一起使用
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
的工作方式与将createfile和路径\\.\C:
一起使用
是的,您可以访问卷影副本文件系统,它具有自己的引导扇区,mft等。