ldapadd自动支持replace,如果条目已经存在

我一直在做一些testing与ldapaddldapmodify ,我注意到的是:

– 如果条目已经存在, ldapadd将会失败:

 => hdb_tool_entry_put: txn_aborted! DB_KEYEXIST: Key/data pair already exists (-30995) ldapadd: could not add entry dn="[email protected],ou=People,dc=example,dc=org" (line=1): txn_aborted! DB_KEYEXIST: Key/data pair already exists (-30995) 

– 如果条目没有, ldapmodify将会失败:

 modifying entry "[email protected],ou=People,dc=example,dc=org" ldap_modify: No such object (32) matched DN: ou=People,dc=example,dc=org 

因此,在现有的数据库上恢复备份时,如果存在一些现有的和缺less的条目,则不能只使用这些工具中的任何一个,则需要创build一个例程:
– 删除数据库中已经存在并存在于备份中的所有用户,然后使用ldapadd导入。
– 或将备份ldif文件转换为ldapmodify兼容(根据用户是否存在添加或修改)并使用ldapmodify

问:没有一种工具可以帮你照顾吗?

其他信息:在ubuntu server 10.04上运行openldap 2.4.21

您可以将-a标志设置为ldapmodify或者将行changetype: add放入您的LDIF数据(如果添加条目),并将changetype: modify修改为条目。