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}/"