我一直在开发基于这是微软示例。
一开始我用的是测试工具测试我的应用程序
> betest.exe /B /S backup.xml /D C:\BackupDestination /X BetestSample.xml
> betest.exe /R /S backup.xml /D C:\BackupDestination /X BetestSample.xml
效果很好。我能够:
- 来自 c:\testPath 的备份文件
- 删除它们
- 将它们恢复(到选定的备用位置 c:\testPath2)。
但每当我尝试备份/恢复 10GB 文件时,BETest 就会在恢复操作时崩溃。每次都是这样。我查看了其他工具:
- 垂直阴影
- 管理控制台
- 管理员
使用 VShadow,我输入:
> vshadow -p -t=c:\bc.xml c:
我可以看到我的 Writer 正在打印:
enter: DepWriter::Initialize
enter: DepWriter::OnIdentify
enter: DepWriter::OnPrepareBackup
enter: DepWriter::OnPrepareSnapshot
enter: DepWriter::OnFreeze
enter: DepWriter::OnThaw
enter: DepWriter::OnPostSnapshot
enter: DepWriter::OnIdentify
enter: DepWriter::OnBackupComplete
enter: DepWriter::OnBackupShutdown
我能够使用 MKLink 链接卷影副本并浏览它:
> mklink /D c:\snapshots \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy6\
我可以看到我想要备份的文件。
然后我输入:
> vshadow -r=c:\bc.xml
输出内容(除其他外):
Sending the PreRestore event ...
(Waiting for the asynchronous operation to finish...)
Set restore status for all components components for restore...
* Writer 'DFS Replication service writer':
- Select component \SYSVOL\3E53186A-7D53-4667-A3D1-D278B3564CDC-DF424FA9-3080-403E-B7CE-2A81A03A79FA
* Writer 'MSDNSampleWriter':
- Select component \TestFiles
Sending the PostRestore event ...
Restore done.
然后我得到了我的作家印刷品:
enter: DepWriter::OnIdentify
enter: DepWriter::OnPreRestore
enter: DepWriter::OnPostRestore
但在 c:\testPath 和 c:\testPath2 中都找不到我的文件。它们没有被恢复。
我的 VSS Writer 是 MSDN 中示例 Writer 的直接修改版,对于小文件,它运行良好,并且测试结果良好。
为什么 VShadow 无法恢复我的文件并说它已完成? 我在 Windows Server 2008 R2 64Bits 上使用它
答案1
我找到了一个方法...
需要使用 exec={command} 开关。
就我而言,命令很简单:
vshadow -p -t=c:\bc.xml -exec="robocopy pathA pathB"
不过我猜正常的请求者会做比这更聪明的事情。最有可能的是它会自己找到替代位置,并制定失败时的策略……但到目前为止我还没能找到比 vshadow 更好的工具。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384575%28v=vs.85%29.aspx