Openldap

LDAP:使用 slapcat 與 ldapsearch 進行備份

  • January 31, 2019

用過的: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/slapadd2) 和 之間還有什麼區別ladpsearch/slapcat

很好的總結,補充幾點:

  • slapcat從任何(本地)直接儲存後端轉儲,它不必是伯克利(hdb 或 bdb),它也適用於OLCcn=config)。它轉儲為LDIF 格式。(直接我的意思是由 OpenLDAP 直接管理,而不是例如 SQL 後端,即使它儲存在本地。)
  • ldapadd要求 slapd正在執行,slapadd要求它沒有執行
  • ldapsearch需要它slapd 正在執行,slapcat不關心它是否與 BDB 後端一起執行,正如您所指出的

簡而言之:

  • slapcat是獲得可以快速恢復的良好備份的方法,儘管主伺服器上有停機時間(您可以通過設置各種類型的複制來解決此問題)。這是您應該用於正常備份和升級前備份的內容。
  • ldapsearch(不帶+)將為您提供可移植的備份,您可能可以輕鬆地將其載入到任何其他目錄伺服器中,但它只能在簡單的 OpenLDAP 設置中進行可行的恢復(無複製、無特殊覆蓋、無重寫),並且如果您不關心保留 UUID/創建/修改元數據。您還需要與數據一起使用的任何額外架構文件。
  • ldapadd(使用其其他身份)可用於輕鬆應用 LDAP 修改(對象修改、刪除和重命名),這些修改在/單獨時ldapmodify是不可行或不可能的slapadd``slapcat

對於大多數管理員來說,主要考慮因素來自每種情況下 LDIF 的內容略有不同,以及slapd執行(或不執行)的要求。更重要的區別是:

  1. slapcat更快,因為它只是轉儲數據庫,跳過 LDAP 協議成本、身份驗證、訪問控制、對象和時間限制、覆蓋;並且它不根據 LDAP 層次結構進行搜尋。
  2. slapadd更快(同樣,沒有 LDAP 協議成本),如果您要恢復已知良好的備份,您可以在快速模式( -q) 下執行以加快大型導入。您也可以禁用模式檢查 ( -s),但請注意,OpenLDAP 版本之間的模式或數據驗證的微小變化並非聞所未聞。
  3. slapcat僅限於本地數據庫,它不會像這樣跨越到其他目錄(例如使用back-ldap, back-metaldapsearch。這同樣適用於slapadd/ ldapadd
  4. ldapsearch將返回未儲存在後端的動態屬性,例如hasSubordinates由覆蓋層維護的動態屬性(例如slapo-memberof)。您將在載入這些時遇到問題ldapadd(例如,沒有使用者修改的操作屬性)。重寫 (slapo-rwm) 也可能會扭曲ldapsearch對目錄內容的看法。
  5. slapcat包括內部(操作)屬性,如果您使用複制,這些屬性很關鍵。使用複制,您對備份的依賴程度有所降低,但如果您使用ldapadd重新載入主伺服器,每個對像都將通過複製重新創建(更改entryUUID entryCSN)儘管您可以通過使用特殊的“+”屬性ldapsearch(或allop覆蓋)來包含操作屬性,這與 不同slapcat,請參閱前一點了解為什麼會這樣。這些屬性還包括創建/修改 DN 和時間戳,這對某些應用程序可能很重要。
  6. 因為slapcat不遵守 LDAP 層次結構(隱含排序),所以不能保證它的數據排序將是可行的ldapadd- 即,即使您去掉操作屬性,ldapadd也會抱怨,因為下屬可能出現在他們的上級(父母)之前. LDAP 規範要求存在父級,但在這方面也未定義搜尋結果排序。請參閱下面霍華德的評論,OpenLDAPslapadd默默地支持某些後端的無序數據。在緊要關頭,您可以重複使用slapaddcontinue on error 選項 ( -c) 直到創建所有“亂序”父級,當您不再收到任何錯誤程式碼 32(沒有這樣的對象
  7. ldapadd受 LDAP 規則和覆蓋的約束,例如參照完整性、ppolicy(密碼策略)
  8. slapcat至少對 userPassword 使用 base-64 編碼的屬性值(::在屬性名稱後面標明)
  9. ldapsearch有更多的 LDIF 格式選項,以及將大屬性寫入單獨的文件。它還可以處理引用別名

引用自:https://serverfault.com/questions/577356