LDAP:使用slapcat与ldapsearch进行备份

使用: openldap-servers-2.4.23-34.el6_5.1.x86_64

任务:为crontab创build脚本以创build预定数据库完整备份。

1) slapcat – 以默认格式Berkeley DB创build文件。

2) slapcat可以在slapd运行时完成(如果使用bdb/hdb数据库)。

3)在slapcat之后恢复文件 – 必须使用slapdd (不是ldapadd )。

4) slapcat/add不需要密码。

5) slapadd只能在slapd停止时才能完成。

例:

  $ slapcat -f /etc/openldap/slapd.conf -b "dc=db_1" -l db_1_backup.ldif $ slapadd -l db_1_backup.ldif 

而不是slapcat/add – 让我们来看看ldapsearch/add

1) ldapsearch – 创build与slapcat几乎相同的信息的文件;

2) ldapadd – 可以使用来自ldapsearch文件,不需要slapd必须停止;

3) ldapadd/search – 需要密码。

例:

  $ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif $ ldapadd -x -D "cn=root,dc=db_1" -W -f db_1_backup2.ldif 

所以 – 问题是:

1)我错过了这个工具描述中的任何东西吗?

2)还有什么区别ldapadd/slapaddladpsearch/slapcat

好的总结,一些额外的观点:

  • (本地)直接存储后端的slapcat转储,它不需要是Berkeley(hdb或bdb),它也可以与OLC ( cn=config )一起使用。 它转储为LDIF格式 。 (我直接指的是直接由OpenLDAPpipe理,不是一个SQL后端,即使它本地存储。)
  • ldapadd要求slapd 正在运行, slapadd要求它运行
  • ldapsearch要求slapd 正在运行, slapcat不关心它是否在BDB后端运行,正如你注意到的

简而言之:

  • slapcat是获得可以快速恢复的良好备份的方法,虽然主服务器可能会停机(可以通过设置各种types的复制来解决此问题)。 这是您应该使用的一般备份和预升级备份。
  • ldapsearch (不带+ )会为你提供一个可移植的备份,你可以很容易地加载到任何其他的目录服务器上,但它只是一个简单的OpenLDAP设置(不复制,没有特殊的覆盖,不重写)的可行恢复。如果你不关心保存UUID /创build/修改元数据。 您还需要任何额外的模式文件,以及您的数据。
  • 可以使用ldapadd (使用其他身份ldapmodify )轻松应用LDAP修改(对象修改,删除和重命名),这些修改slapcat单独使用slapadd / slapcat

对于大多数pipe理员来说,主要考虑因素是在每种情况下LDIF的内容略有不同,并且要求slapd运行(或不运行)。 更重要的区别是:

  1. slapcat速度更快,因为它简单地转储数据库,跳过LDAP协议开销,身份validation,访问控制,对象和时间限制,覆盖; 而且它不根据LDAP层次进行search。
  2. slapadd速度更快(同样,没有LDAP协议的开销),并且在恢复已知正常的备份的情况下,您可以在快速模式-q运行以加快大的导入速度。 您也可以禁用模式检查( -s ),不过在OpenLDAP版本之间进行模式或数据validation的小改动并不是前所未闻的。
  3. slapcat仅限于本地数据库,不会以ldapsearch的方式跨越到其他目录(例如back-ldapback-meta )。 这同样适用于slapadd / ldapadd
  4. ldapsearch将返回不存储在后端的dynamic属性,例如hasSubordinates或由overlay维护的属性(例如slapo-memberof )。 使用ldapadd加载这些文件时会遇到问题(例如,没有用户修改的操作属性)。 重写(slapo-rwm)也可能会扭曲ldapsearch对目录内容的看法。
  5. slapcat包含内部(可操作)属性,如果使用复制,这些属性至关重要。 如果使用复制,则对备份的依赖程度就会降低,但如果使用ldapadd重新加载主entryUUID ,则每个对象都将通过复制重新创build (更改的entryUUID entryCSN )尽pipe您可以通过在ldapsearch使用特殊的“+”属性来包含操作属性或者allop overlay), 这与slapcat不是一回事 ,请参阅前一点为什么是这样。 这些属性还包括创build/修改DN和时间戳,这对于某些应用程序可能很重要。
  6. 因为slapcat没有遵守LDAP层次结构(隐含sorting),所以不能保证其数据sorting对于ldapadd是可行的,即,即使删除了操作属性, ldapadd也可以投诉,因为子坐标可能出现在他们的上级之前(父母)。 LDAP规范要求存在一个父代,但是在这方面也会将search结果sorting为undefined。 看到Howard的评论,OpenLDAP的slapadd默默地支持一些后端的无序数据。 在一个捏你可能能够重复使用slapadd与继续错误选项( -c ),直到所有的“无序”父母创build,停止时,不再收到任何错误代码32(没有这样的对象,意味着失踪父母)并且仅接收每个对象的代码68(已经存在)。
  7. ldapadd受LDAP规则和覆盖,例如参照完整性,ppolicy(密码策略)
  8. slapcat倾向于使用base-64编码的属性值,至less用于userPassword(在属性名称后用::表示)
  9. ldapsearch有更多的selectLDIF格式,并写入大型属性来分隔文件。 它也可能处理引荐和别名 。

slapcat不起作用,如果你有覆盖,例如memberOf 。 所以,如果你做一个slapcat / slapadd周期成员覆盖将不再工作。