#!/bin/bash
# 备份基目录
BASE_BACKUP_DIR="/path/to/dir"
DATE=$(date +%Y%m%d)
OLD_DATE=$(date -d "7 days ago" +%Y%m%d)
# 数据库信息
declare -A databases=(
[port]="passwd"
)
HOST="IP"
USER="root"
# 备份数据库
for PORT in "${!databases[@]}"; do
IFS=":" read -r PASSWORD DIR_SUFFIX <<< "${databases[$PORT]}"
BACKUP_DIR="${BASE_BACKUP_DIR}/${DIR_SUFFIX}"
# 创建备份目录(如果不存在)
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
echo "正在备份端口号为 ${PORT} 的数据库到目录 ${BACKUP_DIR}..."
mysqldump -h $HOST -P $PORT -u $USER -p$PASSWORD --all-databases > "${BACKUP_DIR}/mysql_bak${DATE}.sql"
if [ $? -eq 0 ]; then
echo "备份端口号为 ${PORT} 的数据库成功。"
else
echo "备份端口号为 ${PORT} 的数据库失败。"
fi
done
echo "所有备份完成。"
# 删除一周前的备份文件
echo "正在删除一周前的备份文件..."
find $BASE_BACKUP_DIR -type f -name "*_bak${OLD_DATE}.sql" -exec rm -f {} \;
if [ $? -eq 0 ]; then
echo "一周前的备份文件删除成功。"
else
echo "删除一周前的备份文件失败。"
fi
echo "备份脚本执行完毕。"
备份多个数据库脚本
最新推荐文章于 2025-01-08 17:43:16 发布