OpenLDAP配置和数据备份脚本

openldap-backup.sh

#!/bin/bash
# OpenLDAP数据备份脚本

set -e

# 1. 缓存日期变量,避免重复调用导致不一致
BACKUP_DATE=$(date "+%Y%m%d")
BACKUP_DIR="/data/openldap-${BACKUP_DATE}"
BACKUP_TAR="${BACKUP_DIR}.tar.gz"

# 2. 规范获取脚本所在目录,双引号包裹变量
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
cd "$SCRIPT_DIR"
echo "dir=$SCRIPT_DIR"

# 3. 校验/data目录是否存在,不存在则创建
if [ ! -d "/data" ]; then
    mkdir -p "/data"
fi

# 4. 创建备份目录(-p 避免目录已存在报错)
mkdir -p "${BACKUP_DIR}/db"
mkdir -p "${BACKUP_DIR}/etc"

# 5. 复制数据(-r 递归复制,双引号包裹路径)
cp -r /var/lib/ldap "${BACKUP_DIR}/db/"
cp -r /etc/openldap "${BACKUP_DIR}/etc/"

# 6. 压缩备份目录(指定绝对路径,避免找不到目录)
tar czf "${BACKUP_TAR}" -C /data "openldap-${BACKUP_DATE}"

# 7. 删除临时目录
rm -rf "${BACKUP_DIR}"

# 8. 清理90天前的备份(用while read循环,兼容含空格的文件名)
date >> rm.log
find /data -maxdepth 1 -mindepth 1 -mtime +90 -name "openldap-20*" | while read -r OLD_BACKUP; do
    OLD_BACKUP_NAME=$(basename "${OLD_BACKUP}")
    echo "rm -rf /data/${OLD_BACKUP_NAME}" >> rm.log
    rm -rf "${OLD_BACKUP}"
done
echo "---------------------------------------" >> rm.log

# 9. 可选:scp同步备份文件(取消注释启用,双引号包裹路径)
# scp -r "${BACKUP_TAR}" root@192.168.200.101:/opt/backupdir/

posted @ 2022-06-09 21:43  wanghongwei-dev  阅读(191)  评论(0)    收藏  举报