41

私はこれがstackoverflowの質問というよりもserverfaultの質問に似ていることを知っていますが、serverfaultはまだ起動していないので、ここに行きます:

アプリケーションをあるredhatサーバーから別のサーバーに移動することになっていますが、アプリケーションの内部動作について十分な知識がない場合、スキーマなどを使用して、OpenLDAPデータベースをあるマシンから別のマシンに移動するにはどうすればよいでしょうか。

どのファイルをコピーする必要がありますか?セットアップはかなり標準的だと思います。

4

6 に答える 6

47

SourceRebelsの回答の問題は、データが/slapcat(8)に対して順序付けられていることを保証しないことです。マニュアルページから:ldapadd(1)ldapmodify(1)

このツールによって生成されたLDIFは、slapadd(8)での使用に適しています。
エントリはデータベースの順序であり、上位の1次ではないため、
最初に並べ替えないと、ldapadd(1)をロードできません。

さらに、バックエンドファイルを使用してデータベースをダンプするツールを使用してから、LDAPプロトコルを介してldifをロードするツールを使用することはあまり一貫していません。

slapcat(8)/ slapadd(8) OR ldapsearch(1) /の組み合わせを使用することをお勧めしますldapmodify(1)。LDAPサーバーへのシェルアクセスやファイルの移動は必要ないため、私の好みは後者になります。

たとえば、dc = master、dc = comの下のマスターサーバーからデータベースをダンプし、バックアップサーバーにロードします

$ ldapsearch -Wx -D "cn = admin_master、dc = master、dc = com" -b "dc = master、dc = com" -H ldap://my.master.host-LLL>ldap_dump-20100525-1。 ldif
$ ldapadd -Wx -D "cn = admin_backup、dc = backup、dc = com" -H ldap://my.backup.host -f ldap_dump-20100525-1.ldif

上記の-Wフラグは、ldap admin_masterパスワードの入力を求めますが、出力をファイルにリダイレクトしているため、プロンプトは表示されません。空の行だけです。先に進み、ldap admin_masterパスワードを入力すると、機能します。ldapaddを実行する前に、出力ファイルの最初の行を削除する必要があります(LDAPパスワードを入力してください:)。

最後のヒントは、(追加)フラグをオンにした状態ldapadd(1)へのハードリンクです。ldapmodify(1)-a

于 2010-05-25T05:08:34.453 に答える
20

ldapsearchとldapaddは、LDAPDBのクローンを作成するための最良のツールであるとは限りません。slapcatとslapaddははるかに優れたオプションです。

slapcatを使用してDBをエクスポートします。

slapcat > ldif

slapaddを使用してDBをインポートします(LDAPサーバーが停止していることを確認してください)。

slapadd -l ldif
于 2010-07-23T01:41:53.173 に答える
9

いくつかの予定:

  • パーソナライズされたスキーマとオブジェクトクラスの定義を新しいサーバーに保存します。たとえば、slapd.confでインクルードされたファイルを検索して取得できます(これは私のslapd.confの一部です)。

    /etc/ldap/schema/core.schemaをインクルードします

  • パーソナライズされたスキーマとオブジェクトクラスを新しいopenLDAPインストールに含めます。

  • slapcatコマンドを使用して、完全なLDAPツリーを単一/さまざまなldifファイルにエクスポートします。

  • ldapaddを使用して、ldifファイルを新しいLDAPインストールにインポートします。

于 2009-04-27T09:36:43.177 に答える
8

私はプロトコルを介してデータベースをコピーすることを好みます:

まず、両方のサーバーに同じスキーマがあることを確認してください。

-ldapsearchを使用してデータベースをダンプします
。ldapsearch-LLL-Wx-D "cn = admin、dc = domain" -b "dc = domain"> domain.ldif

-そしてそれを新しいサーバーにインポートします:
ldapmodify -Wx -D "cn = admin、dc = domain" -a -f domain.ldif

1行で:
ldapsearch -LLL -Wx -D "cn = admin、dc = domain" -b "dc = domain" | ldapmodify -w pass -x -D "cn = admin、dc = domain" -a

bin / ldap *コマンドを使用すると、サーバーと直接通信し、bin / slap *コマンドを使用すると、バックエンドファイルを処理します。

于 2009-05-19T13:12:27.043 に答える
3

(コメントを書くのに十分な評判ではありません...)

Ldapsearchは、LDAPサーバーへの接続を開きます。代わりに、Slapcatはデータベースに直接アクセスします。これは、ACL、時間とサイズの制限、およびLDAP接続の他の副産物が評価されないため、データが変更されないことを意味します。(Matt Butcher、「MasteringOpenLDAP」)

于 2014-04-30T13:23:52.873 に答える
2

ありがとう、ヴィッシュ。チャームのように働いた!コマンドを編集しました:

ldapsearch -z max -LLL -Wx -D "cn=Manager,dc=domain,dc=fr" -b "dc=domain,dc=fr" >/tmp/save.ldif

ldapmodify -c -Wx -D "cn=Manager,dc=domain,dc=fr" -a -f /tmp/save.ldif

-z maxサイズ制限を回避するためにを追加し-c、ターゲットドメインがすでに存在する場合でも続行します(私の場合)。

于 2013-06-09T15:33:46.740 に答える