我已经进行了一些测试ldapadd
并且ldapmodify
我注意到的是:
-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
因此,当在现有数据库上恢复某些现有和缺失条目的备份时,您不能只使用这两种工具中的任何一种,而需要创建一个例程:
- 删除数据库中已存在并出现在备份中的所有用户,然后使用导入ldapadd
。-
或将备份 ldif 文件转换为 ldapmodify 兼容(根据用户是否存在进行添加或修改)并使用ldapmodify
。
问:没有一个工具可以帮你解决这个问题吗?
附加信息:正在openldap 2.4.21
运行ubuntu server 10.04
答案1
如果您添加条目,您可以给出-a
标志ldapmodify
或将该行放入您的 LDIF 数据中,并修改该条目。changetype: add
changetype: modify