问题标签 [volume-shadow-service]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 备份大量文件而不枚举
.NET 中是否有办法备份包含多个子目录的目录,每个子目录可能包含 10,000 个或更多大小约为 100kb-500kb 的文件而无需枚举?这里的用例是将文件增量备份到 USB 存储和 NAS,但由于文件数量的原因,这可能需要很长时间。我熟悉 VSS 并使用它创建了一些自定义备份应用程序,但我想知道是否有办法对包含这些文件的卷进行快照并仅保存快照,而不必将快照公开为已安装的映像并复制每个文件。结束游戏是为了缩短复制操作所需的时间。
windows - VSS 备份导致自定义 Windows 服务失败
我在 vb.net 中构建了自定义 Windows 服务,这些服务在计时器上运行并在远程目录中查找要处理的文件。在一些服务器上,它们在同一时间(大约晚上 10 点 04 分 VSS 服务失败时)失败而没有任何错误。服务错误如下所示:
“该进程无法访问文件 filename.txt,因为它正被另一个进程使用。”
有时没有错误但服务挂起。我假设这是 VSS 服务。无论如何,CPU 会出现高达 100% 的巨大峰值并回落。我有日志(即上面无法写入的文件)将所有活动传递给我,并且每个进程都包含在 try..catch 中,它还会为我报告日志异常。没有任何结果。进程在代码的随机部分失败,通常在轮询计时器中,有时在处理过程中没有警告。该服务挂起,但说它仍在 services.msc 中运行。
有没有人遇到过这个问题或知道解决方法?我正在考虑使服务成为多线程的,以便可以检查另一个线程以防一个线程挂起,但不确定这是否能解决问题。我们尝试为服务器提供更多资源,这似乎有所帮助,但并没有完全解决问题。有时会超载,有时则不会。使用 windows server 2008 x64。
提前感谢您的帮助!
c++ - ExposeLocally 因 COM 错误而失败
我正在按照这篇文章使用 Windows VSS 服务创建快照,并通过安装它进一步向前迈进了一步。
搜索后,我找到了一个方法ExposeSnapshot()
,我将所需参数传递给如下
result = pBackup->ExposeSnapshot(snapshotProp.m_SnapshotId, NULL, VSS_VOLSNAP_ATTR_EXPOSED_LOCALLY, L"C:\\Mount\\", &pwszExposed);
此外,我将上下文设置为,result = pBackup->SetContext(VSS_CTX_APP_ROLLBACK | VSS_CTX_BACKUP);
因为只能在本地安装持久性卷影副本,但仍具有相同HRESULT = 0x80070057
的内容,如下所示One or more arguments are invalid
这里可能的错误是什么?
PS:我也用过L"C:\\Mount\\
,L"C:\Mount\\
但似乎都不起作用
c# - 如何使用 C# 删除卷影副本?
我需要删除 Windows Server 2003 中的一个或所有卷影副本。如何使用 C# 来完成?例如,我可以在 cmd 中写“vssadmin delete shadows /all”,一切都会好的,但我需要自动执行。
c# - 系统驱动器到磁盘克隆
我正在尝试找到一种方法将活动的 Windows 系统磁盘克隆到另一个磁盘,而不会像 Clonezilla 要求的那样强制用户使磁盘脱机。
我正在考虑 Microsoft 卷影复制服务 (VSS) 至少部分答案。(我完全愿意接受更好的想法/解决方案。)
在继续代码示例之前,我对 VSS(.Net 接口使用可通过 NuGet 包管理器获得的 AlphaVSS)有点犹豫,因为两个使用 VSS(Shadow Copy 和另一个工具)的实用程序没有正确复制驱动器. 并非所有文件都被复制,尤其是根目录中的 sys 文件正确,并且也没有复制完整权限。一个简单的 Araxis 磁盘比较显示了副本的不准确性。此外,我无法启动克隆的驱动器。我得到一个屏幕说驱动器无法启动并且必须修复。
该示例有点难以理解。我期待看到包含开关(子目录与非子目录,权限等,等等,等等)
我确实看过dotNetDiskImager,但那是USB到图像文件和图像文件到USB磁盘。修改代码,让一个人开车去潜水是完全失败的。不能只是愚蠢地复制扇区。必须知道您正在复制什么并进行修改。仅仅复制扇区并不是一项简单的任务,因此回到 VSS。
有更好的想法吗?
这是一个更新的 AlphaVSS 代码,它修复了由于 AlphaVSS 同步而不是异步导致的编译器错误。我还将代码从 VB 翻译成 C#。
简而言之,我想取一个通常具有“系统保留”、“主”和恢复分区的实时系统磁盘,并在系统中的另一个磁盘上进行实时克隆。
我会确保新磁盘有足够的空间,已经分区并格式化为 3 个 NTFS 分区。
powershell - 在通过 GUI [powershell] 访问之前无法访问卷影复制
我正在编写一个简单的 powershell 脚本,它将自动从 Windows 文件服务器到另一个远程 Windows 服务器的异地备份。文件可能正在使用中,因此为了让 Robocopy 成功复制它们,我需要从该特定驱动器的最后一个可用卷影副本中复制文件。
我可以用 Powershell 找到最后一个 Shadow Copy 就好了;问题是我实际上无法“引用”它(挂载它)以访问卷影副本上的文件。
但是,如果我首先通过 Windows 资源管理器 GUI访问 Shadow Copy 的内容,这种“神奇”的变化
然后突然之间,我可以很好地访问卷影副本并将内容复制到远程备份服务器。
这是有问题的代码:
如果我在不通过 GUI 访问最后一个卷影副本的情况下运行脚本的这一部分,我会收到以下错误:
同样,当我通过 Windows 资源管理器打开卷影副本时(显然?)Windows 正确引用了它,我就不会收到此类错误。卷影复制安装没有任何问题,我可以访问文件和文件夹。
我不是 Powershell 专家,也不是很热衷于它。我被这个问题困扰了好几天了。有谁知道如何解决这个问题和/或知道解决方法?
c++ - 在程序中访问卷影复制服务快照文件有哪些选项?
我正在使用 C++ 和 VSS API 在程序中创建 VSS 快照。根据此处,您可以使用 FindFirstFile/FindNextFile 函数或创建指向卷的符号链接并通过链接访问 VSS 快照中的文件。还有其他方法吗?谢谢。
winapi - 物理磁盘读取如何与 ntfs 的卷影一起工作?
我的目标是让备份程序读取物理磁盘(带有 NTFS 分区),同时使用 VSS 来实现数据一致性。
我使用 windows api 的函数 CreateFile 和 '\.\PhysicalDriveN' 如此处所述(基本上,它允许我将磁盘作为大文件访问)
https://support.microsoft.com/en-us/help/100027/info-direct-drive-access-under-win32
对于测试,我使用此命令创建体积阴影
这是一个临时解决方案,我计划通过程序本身使用 VSS
我的问题是: 如何存储卷影?它是存储自卷影以来已修改的数据,还是存储自上次卷影以来所做的修改?
在第一种情况下: 当我读取磁盘时,我会得到一致的数据(包括 ntfs 元数据文件)吗?
在另一种情况下: 我可以像访问磁盘/分区一样访问卷影吗?(为了读取隐藏的元数据文件等)
-我目前正在使用 Windows 7,但计划在不同版本的 Windows 服务器上使用它
-我已经阅读了很多关于 VSS 的微软文档,但它的工作原理对我来说似乎真的不清楚(如果你回答了一个,请解释一下它的含义)
-我知道卷影作为文件存储在“系统卷信息”文件夹中,名称类似于 {3808876b-c176-4e48-b7ae-04046e6cc752}
visual-c++ - IVssExamineWriterMetadata 的 C++ 和 COM 接口有什么区别?
根据https://docs.microsoft.com/en-us/windows/desktop/api/vsbackup/nl-vsbackup-ivssexaminewritermetadata:
IVssExamineWriterMetadata 接口是一个C++(不是 COM)接口,允许请求者检查特定写入器实例的元数据。此元数据可能来自当前正在执行的(实时)编写器,或者它可能已存储为 XML 文档。
我看到的所有代码都将其视为 COM 接口。
- https://github.com/Microsoft/Windows-classic-samples/blob/master/Samples/VShadowVolumeShadowCopy/cpp/writer.cpp#L108
- https://github.com/GoogleCloudPlatform/compute-image-windows/blob/master/third_party/vss/GoogleVssAgent/writer.cpp#L48
这个定义对我来说就像 COM。
https://github.com/candera/hobocopy/blob/master/inc/winxp/vsbackup.h#L91
这里有什么区别?它是否以某种记录方式违反了 COM 接口设计规则?
c++ - VssExpressWriter 无法将文件夹添加到还原点
我正在尝试使用 VSS Express Writer 在执行还原点时将我的一个文件夹包含在还原点中。虽然代码似乎运行没有任何错误,但我没有得到预期的结果,当我返回还原点时,该文件夹也没有保留。
为了验证我的代码功能,我可以在 vssadmin list writers 中跟踪我的 writer。
我正在执行以下流程:
- 使用以下代码注册(见下文)。
- 创建系统还原点。
- 删除我的文件夹。
- 重新开始
- 恢复我的系统。
不幸的是,我没有找回我的文件夹..
procmon 记录是在系统还原点期间设置的,当时没有找到包含 myFolder 路径的事件...是否有可能在向 vsswriter 注册期间而不是在创建还原点期间添加了文件?
也许任何人都可以帮我找到我在这里缺少的东西?
谢谢