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