用过的: 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
Run Code Online (Sandbox Code Playgroud)
而不是slapcat/add
- 让我们来看看ldapsearch/add
:
1) ldapsearch
- 创建文件与几乎相同的信息slapcat
;
2) ldapadd
- 可以使用文件 from 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
Run Code Online (Sandbox Code Playgroud)
所以 - 问题是:
1) 我在这个工具描述中遗漏了什么吗?
2)ldapadd/slapadd
和之间还有ladpsearch/slapcat
什么区别?
mr.*_*tic 14
总结不错,补充几点:
slapcat
无论(本地)直接存储后端是什么,它都不必是 Berkeley(hdb 或 bdb),它也可以与OLC ( cn=config
) 一起使用。它转储为LDIF 格式。(直接我的意思是由 OpenLDAP 直接管理,而不是例如 SQL 后端,即使它存储在本地。)ldapadd
要求 slapd正在运行,slapadd
要求它没有运行ldapsearch
正如您所指出的,要求slapd
正在运行,slapcat
并不关心它是否与 BDB 后端一起运行简而言之:
slapcat
是获得可以快速恢复的良好备份的方法,尽管主服务器会停机(您可以通过设置各种类型的复制来解决此问题)。这是您应该用于常规备份和升级前备份的内容。ldapsearch
(没有+
)将为您提供一个便携式备份,您可以轻松地将其加载到任何其他目录服务器中,但它只能在简单的 OpenLDAP 设置(无复制、无特殊覆盖、无重写)中进行可行的恢复,并且如果您不关心保留 UUID/创建/修改元数据。您还需要与数据一起使用的任何额外架构文件。ldapadd
(使用其其他身份ldapmodify
)可用于轻松应用 LDAP 修改(对象修改、删除和重命名),这些修改单独使用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
continue on error 选项 ( -c
),直到创建所有“无序”父项,当您不再收到任何错误代码 32(没有这样的对象,ldapadd
受 LDAP 规则和覆盖的约束,例如参照完整性、ppolicy(密码策略)slapcat
更喜欢至少为 userPassword 使用 base-64 编码的属性值(::
在属性名称后表示)ldapsearch
具有更多用于 LDIF 格式和将大属性写入单独文件的选项。它还可以处理引用和别名。