Openldap
LDAP:使用 slapcat 與 ldapsearch 進行備份
用過的:
openldap-servers-2.4.23-34.el6_5.1.x86_64
任務:創建腳本
crontab
以創建計劃的數據庫完整備份。
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
:
ldapsearch
- 創建具有幾乎相同資訊的文件slapcat
;
ldapadd
- 可以使用來自的文件ldapsearch
,不需要slapd
停止;
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
?
很好的總結,補充幾點:
slapcat
從任何(本地)直接儲存後端轉儲,它不必是伯克利(hdb 或 bdb),它也適用於OLC(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 規範要求存在父級,但在這方面也未定義搜尋結果排序。請參閱下面霍華德的評論,OpenLDAPslapadd
默默地支持某些後端的無序數據。在緊要關頭,您可以重複使用slapadd
continue on error 選項 (-c
) 直到創建所有“亂序”父級,當您不再收到任何錯誤程式碼 32(沒有這樣的對象ldapadd
受 LDAP 規則和覆蓋的約束,例如參照完整性、ppolicy(密碼策略)slapcat
至少對 userPassword 使用 base-64 編碼的屬性值(::
在屬性名稱後面標明)ldapsearch
有更多的 LDIF 格式選項,以及將大屬性寫入單獨的文件。它還可以處理引用和別名。