如何在 eXist-db 的 backup/restore 中维护自定义 ACL
How to maintain custom ACL in backup/restore of eXist-db
我正在将数据库从 eXist 2.2 升级到 4.5。
我使用 Java Admin Client 创建了整个 eXist 2.2 数据库的备份。我全新安装了 eXist 4.5 运行。
我把 ZIP 移过去并做了恢复。
当我浏览数据库并进行检查时,我发现了一个明显的问题(至少对我而言),因为我对具有特定组件访问权限的组广泛使用了 ACL。
并排检查这些显示了问题:
左边是新服务器,右边是旧服务器。
文件旁边的“+”号表示的所有自定义 ACL 都消失了。
这仅发生在一个集合中,在该集合中,在恢复过程中报告了无法设置权限的错误。
现在,在那个集合中,只有大约 40 个文件需要自定义 ACL,因此修复它并不是什么大不了的事情,但问题是我们为什么做错了或者我们做错了什么?我会注意到许多其他文件夹没有这个问题并且所有权限都已设置。
根据问题更新:
好像缺少一个用户组...我想我知道为什么
2019-05-17 21:50:13,226 [java-admin-client-0.restore] ERROR (CollectionDeferredPermission.java [apply]:65) - 错误:无法设置权限集合“/db/EIDO/data/edit”。
org.xmldb.api.base.XMLDBException:无法在 class 中调用方法 setPermissions org.exist.xmlrpc.RpcConnection:用户 'admin' 在“/db/EIDO/data/edit”上修改权限的权限被拒绝:组名的用户组 'NA_Territory' 未知。
在 org.exist.xmldb.RemoteUserManagementService.setPermissions(RemoteUserManagementService.java:187) ~[exist.jar:4.5.0]
在 org.exist.backup.restore.CollectionDeferredPermission.apply(CollectionDeferredPermission.java:56) ~[exist.jar:4.5.0]
在 org.exist.backup.restore.RestoreHandler.setDeferredPermissions(RestoreHandler.java:465) ~[exist.jar:4.5.0]
在 org.exist.backup.restore.RestoreHandler.endElement(RestoreHandler.java:137) ~[exist.jar:4.5.0]
在 org.apache.xerces.parsers.AbstractSAXParser.endElement(未知来源)~[xercesImpl-2.11.0.jar:?]
在 org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(未知 所以
因此,如果您尝试还原的备份不包含安全集合 (/db/system/security/exist),并且备份中的其他资源依赖于其中定义的 users/groups,但这些资源不存在在您要导入备份的服务器中,然后您将看到此类错误。
您应该在备份中包含安全集合,或者只包含您还需要备份和恢复的 users/groups。
我正在将数据库从 eXist 2.2 升级到 4.5。 我使用 Java Admin Client 创建了整个 eXist 2.2 数据库的备份。我全新安装了 eXist 4.5 运行。
我把 ZIP 移过去并做了恢复。
当我浏览数据库并进行检查时,我发现了一个明显的问题(至少对我而言),因为我对具有特定组件访问权限的组广泛使用了 ACL。
并排检查这些显示了问题:
左边是新服务器,右边是旧服务器。 文件旁边的“+”号表示的所有自定义 ACL 都消失了。 这仅发生在一个集合中,在该集合中,在恢复过程中报告了无法设置权限的错误。
现在,在那个集合中,只有大约 40 个文件需要自定义 ACL,因此修复它并不是什么大不了的事情,但问题是我们为什么做错了或者我们做错了什么?我会注意到许多其他文件夹没有这个问题并且所有权限都已设置。
根据问题更新:
好像缺少一个用户组...我想我知道为什么 2019-05-17 21:50:13,226 [java-admin-client-0.restore] ERROR (CollectionDeferredPermission.java [apply]:65) - 错误:无法设置权限集合“/db/EIDO/data/edit”。 org.xmldb.api.base.XMLDBException:无法在 class 中调用方法 setPermissions org.exist.xmlrpc.RpcConnection:用户 'admin' 在“/db/EIDO/data/edit”上修改权限的权限被拒绝:组名的用户组 'NA_Territory' 未知。 在 org.exist.xmldb.RemoteUserManagementService.setPermissions(RemoteUserManagementService.java:187) ~[exist.jar:4.5.0] 在 org.exist.backup.restore.CollectionDeferredPermission.apply(CollectionDeferredPermission.java:56) ~[exist.jar:4.5.0] 在 org.exist.backup.restore.RestoreHandler.setDeferredPermissions(RestoreHandler.java:465) ~[exist.jar:4.5.0] 在 org.exist.backup.restore.RestoreHandler.endElement(RestoreHandler.java:137) ~[exist.jar:4.5.0] 在 org.apache.xerces.parsers.AbstractSAXParser.endElement(未知来源)~[xercesImpl-2.11.0.jar:?] 在 org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(未知 所以
因此,如果您尝试还原的备份不包含安全集合 (/db/system/security/exist),并且备份中的其他资源依赖于其中定义的 users/groups,但这些资源不存在在您要导入备份的服务器中,然后您将看到此类错误。
您应该在备份中包含安全集合,或者只包含您还需要备份和恢复的 users/groups。