From 53347b6ca612f0ab691ce1bf81da8330205f291b Mon Sep 17 00:00:00 2001 From: songtianlun Date: Tue, 22 Apr 2025 22:03:36 +0800 Subject: [PATCH] feat: enhance backup process for PostgreSQL data - Added special handling for PostgreSQL data directories to ensure proper backup of the `pg_wal` folder. - Backup now distinguishes between standard and PostgreSQL specific logic, improving the reliability of database backups. - Implemented warnings suppression for unchanged files to prevent clutter during backups. This update improves the robustness of the backup process, ensuring that PostgreSQL data is handled correctly while also maintaining standard directory backup functionality, providing better clarity and usability to users performing backups. --- backups/daemonset+cronjob/cm-script.yaml | 26 ++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/backups/daemonset+cronjob/cm-script.yaml b/backups/daemonset+cronjob/cm-script.yaml index dc9071a..cd24b4e 100644 --- a/backups/daemonset+cronjob/cm-script.yaml +++ b/backups/daemonset+cronjob/cm-script.yaml @@ -53,20 +53,30 @@ data: DIR_NAME=$(basename "$dir") TIMESTAMP=$(date +%Y-%m-%d-%H-%M-%S) BACKUP_NAME="backup-${DIR_NAME}-${TIMESTAMP}.tar.gz" - TEMP_DIR="/tmp/data/${TIMESTAMP}/" BACKUP_PATH="/tmp/${BACKUP_NAME}" SOURCE_SIZE=$(du -sh /data/local-csi | cut -f1) echo "正在备份目录: $dir" - mkdir -p "$TEMP_DIR/$DIR_NAME" - rsync -a "/data/local-csi/$DIR_NAME/" "$TEMP_DIR/$DIR_NAME/" - # 创建备份压缩包 - # tar -czf "$BACKUP_PATH" -C "/data/local-csi" "$DIR_NAME" - tar -czf "$BACKUP_PATH" -C "$TEMP_DIR" "$DIR_NAME" + if [[ "$DIR_NAME" == *"pg"* ]] && [ -d "/data/local-csi/$DIR_NAME/pg_wal" ]; then + echo "检测到 PostgreSQL 数据目录,使用特殊处理..." - # 清理临时目录 - rm -rf "$TEMP_DIR" + TEMP_DIR="/tmp/data/${TIMESTAMP}/" + + mkdir -p "$TEMP_DIR/$DIR_NAME" + rsync -a "/data/local-csi/$DIR_NAME/" "$TEMP_DIR/$DIR_NAME/" + # 创建备份压缩包 + tar -czf "$BACKUP_PATH" -C "$TEMP_DIR" "$DIR_NAME" + + # 清理临时目录 + rm -rf "$TEMP_DIR" + else + # tar -czf "$BACKUP_PATH" -C "/data/local-csi" "$DIR_NAME" + # 普通目录使用标准备份,但忽略文件变更警告 + tar --warning=no-file-changed -czf "$BACKUP_PATH" -C "/data/local-csi" "$DIR_NAME" || { + echo "备份 $DIR_NAME 时出现警告,继续处理..." + } + fi # 计算上传路径 BACKUP_TARGET_PATH="s3://${S3_BUCKET}/${S3_SUBPATH}/${HOSTNAME}/${DIR_NAME}/"