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/
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。

浙公网安备 33010602011771号