Б/У: openldap-servers-2.4.23-34.el6_5.1.x86_64
Задача: создайте сценарий для crontab
создать запланированное полное резервное копирование базы данных.
1) slapcat
- создайте файл в в формате по умолчанию, Беркли 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) Я пропускаю что-нибудь в этом описании инструментов?
2) Что еще различие между ldapadd/slapadd
и ladpsearch/slapcat
?
Хорошее подведение итогов, некоторые дополнительные моменты:
slapcat
дампов из любого (локального) бэкэнда прямого хранилища, это не обязательно должен быть Беркли (hdb или bdb), он также работает с OLC (cn=config
). Он выполняет сброс в LDIF формат. (Под прямым я понимаю непосредственно управляемый OpenLDAP, а не, например, SQL бэкенд, даже если он хранится локально. )ldapadd
требует, чтобы ведомая работала , slapadd
требует, чтобы она не работала , запущеннаяldapsearch
требует, чтобы slapadd
работала, 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
overlay), это не то же самое, что slapcat
, см. предыдущий пункт о том, почему это так.
Эти атрибуты также включают в себя создание/изменение DN и временных меток, которые могут быть важны для некоторых приложений.slapcat
не соблюдает иерархию LDAP (подразумеваемое упорядочивание), нет гарантии, что его упорядочивание данных будет возможным с помощью ldapadd
- т.е. даже если вы удалите операционные атрибуты, ldapadd
может пожаловаться, потому что подорбитаты могут появиться перед их начальством (родителями). Спецификации LDAP требуют, чтобы существовал родитель, но также оставляют порядок следования результатов поиска неопределенным в этом отношении. Смотрите комментарий Говарда ниже, OpenLDAP slapadd
беззвучно поддерживает неупорядоченные данные для некоторых бэкендов. В случае ошибки вы можете многократно использовать slapadd
с опцией continue on error (-c
) до тех пор, пока не будут созданы все "неупорядоченные" родители, останавливаясь, когда вы больше не получаете код ошибки 32 (нет такого объекта, то есть отсутствующего родителя) и получаете только код 68 (уже существует) для каждого объекта. ldapadd
подчиняется правилам LDAP и оверлеям, например, ссылочная целостность, ppolicy (политика паролей)slapcat
предпочитает использовать base-64 закодированные значения атрибутов как минимум для userPassword (указывается с помощью ::
после имени атрибута)ldapsearch
имеет больше возможностей для форматирования LDIF, а также записи больших атрибутов в отдельные файлы. Он также может обрабатывать рефералы и псевдонимы . slapcat
не работает, если у вас есть наложения, например член
. Поэтому, если вы выполните цикл slapcat
/ slapadd
, оверлеи членства больше не будут работать.