站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

OpenLDAP-匯出及匯入 LDIF 檔

前言

當 LDAP 上線服務前第一個要思考的問題當然就是災難復原了,預計讓系統每天凌晨自動備份 LDAP LDIF (LDAP Data Interchange Format),並透過 amd (automounter daemon) mount 方式將 LDAP LDIF 備份資料寫入至備份伺服器中。請注意:以下 Script 只適合我的環境,若您取用請自行調整,恕不負損壞之責。

daily.local 達成如下需求

backup_ldif.sh 達成如下需求

備份 LDAP LDIF 資料流程說明

  1. 先判斷備份 LDAP LDIF 資料夾只留備份日期距離目前最新的 90 個資料夾
  2. 將 SLAPD database to LDIF utility
  3. 匯出 LDAP Database 內容 LDIF 檔

還原 LDAP LDIF 資料流程說明

  1. 停止 slapd 服務 (停止資料寫入)
  2. 將先前備份的 LDIF 資料複製到本機下
  3. 匯入 LDAP LDIF 檔
  4. 啟動 slapd 服務

實作環境

FreeBSD 6.1-RELEASE-p12

Script 內容及如何匯出匯入 LDAP LDIF 資料檔

daily.local 內容

將 backup_ldif.sh 路徑寫入 daily.local 中以便系統每天自動執行備份 LDAP LDIF Script。

 #cat /etc/daily.local
 #!/bin/sh
 /usr/local/sbin/backup_ldif.sh

backup_ldif.sh 內容 (匯入 LDAP LDIF 資料檔)

backup_ldif.sh Script 內容如下

 1. #!/bin/sh
 2. # $Id: backup_ldif.sh,v 1.0 2006/10/03 14:25:26 weithenn Exp $
 3. # Backup LDAP LDIF Script
 4. TODAY=`date +%Y%m%d`
 5. DESTDIR="/host/backup/home/database/ldap/ldif"
 6. KEEPN="90"
 7. BKLDIF="/usr/local/sbin/slapcat -f /usr/local/etc/openldap/slapd.conf -l"
 8. 
 9. #Check KEEP Directory
 10. if [ -d ${DESTDIR} ]; then
 11.       cd ${DESTDIR}
 12.       N=`ls -1|grep -e '[0-9]'|wc -l`
 13.       if [ ${N} -gt ${KEEPN} ]; then
 14.            echo "Removing Stale Backup LDIF..."
 15.            ls -1 | grep -e '[0-9]'|sort -nr|tail -`expr ${N} - ${KEEPN}` | xargs rm -r
 16.            echo "Finished"
 17.       fi
 18.       echo "Backup LDIF..."
 19.       cd ${DESTDIR} ; ${BKLDIF} ${TODAY}.ldif
 20. fi
 21.
 22. cd /
 23. sync;sync;sync

解說 backup_ldif.sh 內容:

4:執行日期指令(執行時建立的資料夾命名即為當天日期)

5:指定屆時存放 LDAP LDIF 檔資料夾(透過 amd 方式 mount 備份伺服器)

6:指定留存日期最新的 90 個資料夾(加上新備份的共會有 91 個資料夾)

7:指定將 SLAPD database to LDIF utility

10:判斷存放 LDAP LDIF 檔資料夾是否存在(判斷第 5 行目錄是否存在)

11:切換至 LDAP LDIF 檔資料夾

12 ~ 17:只留日期最新的 91 個資料夾,其餘舊的資料夾都刪除

19:匯出 LDAP Database 內容 LDIF 檔

匯入 LDAP LDIF 資料檔

 slapadd -f /usr/local/etc/openldap/slapd.conf -l 【指定要還原的 ldif 檔案】

參考

[FreeBSD Hypertext Man Pages slapcat]

[ FreeBSD Hypertext Man Pages mmencode]

[MyUnix論壇 :: 觀看文章 - OpenLDAP的userPassword編碼問題]

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com