如何快照备份/恢复 JCR 存储库?
我需要完全的正直。这意味着,单个备份命令生成的单个快照映像必须是有效的,没有任何外部依赖。并且可以在其他 JCP 实例中完全恢复。这意味着如果我将快照映像恢复到 JCR 实例中,则必须清除存储库中的所有现有数据,并且必须将快照中的所有数据完全恢复为之前存储库中的数据。
停止整个服务来执行此操作很好。一开始我更喜欢正直。
我怎样才能做到这一点?
JCR API 本身并没有提供任何简单的方法来对整个存储库进行完整且可恢复的备份(就像 JDBC 不涵盖关系数据库的备份/恢复功能一样),因此您的问题的答案取决于哪个 JCR 实现你正在使用。
一个适用于任何 JCR 实现的简单解决方案是关闭存储库并对存储库使用的所有数据进行文件系统/数据库备份。
如果您使用的是Apache Jackrabbit,您还可以使用Jackrabbit 独立 jar中包含的备份功能。或者,如果您更喜欢 Java API,您可以使用jackrabbit-core 中包含的RepositoryCopier 类访问相同的功能。使用 RepositoryCopier 时,您甚至可以让源存储库保持运行,只要您可以在应用程序级别强制执行备份运行时没有客户端尝试写入存储库。