我实际上是这个论坛的新手,我一直试着找几个简单的方法将整个LDAP子树复制到另一棵树上。由于我找不到任何有用的东西,我想在这里提出一个问题。有没有人知道如何以编程方式执行此操作?
对于正常操作,如添加,删除,搜索,我一直在使用Spring LDAP。
非常感谢!
答案 0 :(得分:1)
我实际上并不了解Spring LDAP,但如果您的LDAP接口没有为移动/重命名或复制整个子树提供任何高级抽象,则必须递归地移动/重命名或复制所有子树节点。 LDAP API不直接提供此类选项。
以下是伪代码:
function copySubtree(oldDn, newDn)
{
copyNode(oldDn, newDn); // the new node will be created here
if (nodeHasChildren(oldDn) {
foreach (nodeGetChildren(oldDn) as childDn) {
childRdn=getRdn(childDn); // we have to get the 'local' part, the so called RDN
newChildDn=childRdn + ',' + newDn; // the new DN will be the old RDN concatenated with the new parent's DN
copySubtree(childDn, newChildDn); // call this function recursively
}
}
}
答案 1 :(得分:1)
将其转储为LDIF,通过搜索&编辑DN。替换(或通过脚本),并导入新的LDIF。
Spring可能不是这样做的工具。是否有必要使用Spring操作目录?我认为OpenLDAP的ldapsearch和ldapadd应该可以对任何服务器起作用,并且它们将转储/加载LDIF。
答案 2 :(得分:0)
请注意,密码复制起来很棘手。您可能会也可能无法通过LDAP API读取它们。这将取决于你使用它的LDAP实现。
因此,复制到新位置可能无法获得您想要或需要的所有内容。