核心特性与使用场景
- 离线操作
必须停止slapd服务 后再执行(systemctl stop slapd),否则会导致数据损坏。 - 适用场景
- 首次部署 LDAP 时初始化目录树
- 从备份的 LDIF 文件恢复数据
- 批量导入大量数据(效率高于在线
ldapadd)
命令语法详解
slapadd [选项] -l <LDIF文件>
常用选项:
| 选项 | 作用 |
|—————|———————————————————————-|
| -l <文件> | 指定输入的 LDIF 文件路径(必需) |
| -f <文件> | 指定 slapd.conf 或 slapd.d 的配置文件路径(默认:/etc/ldap/slapd.conf) |
| -F <目录> | 指定动态配置目录(如 /etc/ldap/slapd.d/) |
| -b <后缀> | 指定要导入的数据库后缀(如 dc=example,dc=com) |
| -c | 忽略错误继续执行(慎用) |
| -v | 显示详细处理过程 |
完整操作流程(以 Ubuntu 为例)
步骤 1:准备 LDIF 文件
创建数据文件 import.ldif需符合 LDAP 对象结构:
dn: dc=example,dc=com objectClass: top objectClass: domain dc: example dn: ou=users,dc=example,dc=com objectClass: organizationalUnit ou: users
步骤 2:停止 slapd 服务
sudo systemctl stop slapd
步骤 3:执行数据导入
sudo slapadd -v -l import.ldif -F /etc/ldap/slapd.d/
-v:显示导入详情(如处理条目数)-F:指定动态配置目录(根据实际路径调整)
步骤 4:修复文件权限
sudo chown -R openldap:openldap /var/lib/ldap/
步骤 5:重启服务
sudo systemctl start slapd
关键注意事项
- 数据备份
操作前备份数据库目录(默认/var/lib/ldap/):sudo cp -r /var/lib/ldap /backup/ldap
- LDIF 文件规范
- 每条目以
dn开头,空行分隔不同条目 - 属性名区分大小写(如
objectClass不能写成objectclass)
- 每条目以
- 权限问题
- 必须用
root或openldap用户执行 - 导入后检查文件所有权:
chown -R openldap:openldap /var/lib/ldap
- 必须用
- 错误排查
- 若提示
ldif_read_file: checksum error→ 检查 LDIF 文件格式 - 若报错
database already contains data→ 清空/var/lib/ldap/再导入(谨慎操作!)
- 若提示
与 ldapadd 的对比
| 特性 | slapadd |
ldapadd |
|---|---|---|
| 服务状态 | 需停止 slapd |
slapd 运行中 |
| 性能 | 高速(直接写数据库) | 较慢(走网络协议) |
| 原子性 | 无(失败可能部分写入) | 支持事务 |
| 适用数据量 | 百万级条目 | 中小规模数据 |
进阶技巧
- 增量导入
追加数据时使用-c忽略重复条目错误:sudo slapadd -c -l new_data.ldif
- 指定后端数据库
多数据库环境下通过-n <编号>选择(编号对应olcDbIndex配置):sudo slapadd -n 2 -l data.ldif # 导入到第二个数据库
引用说明基于 OpenLDAP 官方文档(slapadd(8C) – Linux Man Page)及常见运维实践整理,操作涉及系统权限,建议在测试环境验证后再部署到生产环境。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5790.html