使用Java进行卷影复制

Yrl*_*lec 6 java windows locking volume-shadow-service

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

然而,我们的问题是我们正在使用Java.有没有简单的方法让我们实现这一点(使用某些库或甚至可能使用某些CLI)?

Ren*_*aud 8

我之前做过这个.

我们发现最简单的方法是构建vshadow.exe的4个版本(用于从Microsoft网站快速启动VSS的演示工具):XP /稍后的每个目标平台和x86/x64.VShadow基本上允许创建或销毁快照并检索如下所示的Path:

\\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyXX您可以用来替换D:JAVA File API一起使用的驱动器号(例如).VSS SDK的VShadow版本是读写的,这个版本与你可以直接下载的exe版本不同,只读.

然后,在Java中,使用统一接口编写两个CLI包装器很容易(用于处理XP和更高版本之间VShadow的两种不同行为).

祝好运.


dty*_*dty 2

所以,我对 VSS 不太了解,但在从 Java 访问 Windows 本机 API 方面,我会查看 JNA。您很可能会发现有人已经将相关 API 定义移植到 JNA 中。