用过的:openldap-servers-2.4.23-34.el6_5.1.x86_64
任务:创建脚本以crontab
创建计划的数据库完整备份。
1) slapcat
-以默认格式 Berkeley DB 创建文件。
2)slapcat
可以在运行时完成slapd
(如果bdb/hdb
使用数据库)。
3)之后恢复文件slapcat
必须使用 - slapadd
(不是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
- 创建与几乎相同信息的文件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)我是否遗漏了该工具描述中的任何内容?
ldapadd/slapadd
2)和之间还有什么区别ladpsearch/slapcat
?
答案1
总结的很好,补充几点:
slapcat
无论(本地)直接存储后端是什么,它都不需要是 Berkeley(hdb 或 bdb),它也可以与奥拉克(cn=config
)。它转储到LDIF 格式. (我所说的直接是指由 OpenLDAP 直接管理,而不是例如 SQL 后端,即使它存储在本地。)ldapadd
需要 slapd是运行,slapadd
要求它不是跑步ldapsearch
要求slapd
是运行,slapcat
并不关心它是否使用 BDB 后端运行,正如你所说
简而言之:
slapcat
是获得良好备份并可快速恢复的方法,尽管主服务器会停机(您可以通过设置各种类型的复制来解决此问题)。您应该将其用于常规备份和升级前备份。ldapsearch
(无+
)将为你带来便携的您可能可以轻松地将备份加载到任何其他目录服务器中,但只有在简单的 OpenLDAP 设置(无复制、无特殊覆盖、无重写)下,并且您不关心保留 UUID/创建/修改元数据时,它才可行恢复。您还需要任何与数据一起使用的额外架构文件。ldapadd
(使用其其他身份)可用于轻松应用 LDAP 修改(对象修改、删除和重命名),而这些修改是单独使用/ldapmodify
无法实现的slapadd
slapcat
对于大多数管理员来说,主要考虑因素是每种情况下 LDIF 的内容略有不同,以及slapd
是否运行的要求。更重要的区别是:
slapcat
速度更快,因为它只是转储数据库,跳过 LDAP 协议开销、身份验证、访问控制、对象和时间限制、覆盖;并且它不根据 LDAP 层次结构进行搜索。slapadd
速度更快(同样,没有 LDAP 协议开销),并且在恢复已知良好的备份时,您可以运行快速模式(-q
)以加快大量导入。您还可以禁用架构检查(-s
),但请注意,OpenLDAP 版本之间架构或数据验证的细微变化并不罕见。slapcat
仅限于本地数据库,它不会像back-ldap
、back-meta
那样跨越到其他目录。 /ldapsearch
也是如此。slapadd
ldapadd
ldapsearch
将返回未存储在后端的动态属性,例如hasSubordinates
或由覆盖层维护的属性(例如slapo-memberof
)。使用 加载这些属性时会遇到问题ldapadd
(例如,没有用户修改的操作属性)。重写(slapo-rwm)也可能会扭曲 的ldapsearch
目录内容视图。slapcat
包括内部(操作)属性,如果您使用复制,这些属性至关重要。使用复制,您对备份的依赖程度会降低,但如果您使用ldapadd
重新加载主服务器,则每个对象都将重新创建通过复制(更改entryUUID
entryCSN
)虽然您可以通过使用特殊的“+”属性ldapsearch
(或allop
覆盖)来包含操作属性,这与slapcat
,请参阅上一点以了解为什么会这样。这些属性还包括创建/修改 DN 和时间戳,这对某些应用程序可能很重要。- 因为
slapcat
不遵守 LDAP 层次结构(隐含排序),所以无法保证其数据排序可行ldapadd
- 即,即使您删除操作属性,也ldapadd
可能会抱怨,因为下属可能会出现在其上级(父母)之前。LDAP 规范要求存在父级,但在这方面也未定义搜索结果排序。请参阅下面 Howard 的评论,OpenLDAPslapadd
默默支持某些后端的无序数据。在紧要关头,您可能能够反复使用slapadd
继续出错选项(-c
),直到创建所有“无序”父级,当您不再收到任何错误代码 32(没有这样的对象,意味着缺少父级)并且只收到每个对象的代码 68(已经存在)时停止。 ldapadd
受 LDAP 规则和覆盖的约束,例如参照完整性、ppolicy(密码策略)slapcat
至少对于 userPassword 倾向于使用 base-64 编码的属性值(在::
属性名称后用 表示)ldapsearch
有更多选项用于 LDIF 格式,并将大型属性写入单独的文件。它还可以处理推荐和别名。
答案2
slapcat
如果您有覆盖,则不起作用,例如memberOf
。因此,如果您执行slapcat
/slapadd
循环会员覆盖将不再起作用。