使用Java进行卷影复制



我目前正在创建一个备份应用程序,我们需要一种读取其他应用程序正在使用的文件的方法,并且我们还希望最大限度地减少对用户文件的锁定。使用Window的卷影复制服务似乎是我们实现这一目标的完美方式。

然而,我们的问题是我们使用的是Java。我们有没有任何简单的方法来实现这一点(使用一些库,甚至可能使用一些CLI)?

我以前做过这个。

我们发现最简单的方法是构建vshadow.exe的4个版本(用于快速启动Microsoft网站上的VSS的演示工具):XP/更新版和x86/x64中的每个目标平台一个。VShadow基本上允许创建或销毁快照并检索路径,路径看起来像:

\?GLOBALROOTDeviceHarddiskVolumeShadowCopyXX,可用于替换与JAVA File API一起使用的驱动器号(例如D:。VSS SDK中的VShadow版本是读写的,这与您可以直接下载的只读exe版本不同。

然后,在Java中,很容易编写两个具有统一接口的CLI包装器(用于处理XP和Later之间VShadow的两种不同行为)。

祝你好运。

所以,我对VSS了解不多,但就从Java访问Windows本机API而言,我会查看JNA。您可能会发现有人已经将相关的API定义移植到了JNA。

嗯。。。通过Java进行操作可能很棘手,而且很容易出错

一种简单的方法是编写一个小型的本机DLL,它可以使用VSS API 执行您希望VSS执行的操作

然后使用C#pInvoke或C++/CLI。。。然后您可以使用任何其他符合CLI的语言

相关内容

  • 没有找到相关文章

最新更新