私は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
を使用します。
Q:それを処理するツールはありませんか?
追加情報:実行中openldap 2.4.21
オン ubuntu server 10.04
-a
フラグをldapmodify
に指定するか、エントリを追加する場合はchangetype: add
行をLDIFデータに挿入し、changetype: modify
を入力してエントリを変更することができます。