#!/bin/bash # 陪玩生产库每日备份:mysqldump -> gzip -> 校验 -> 保留 14 天 # 由 crontab 每天 03:30 调用;凭据从 server/.env 读取,不落盘明文。 set -euo pipefail APP_DIR="/www/wwwroot/peiww.gynhc.com/server" BACKUP_DIR="/www/backup/peiwan" TS="$(date +%Y%m%d_%H%M%S)" OUT="$BACKUP_DIR/db_$TS.sql.gz" cd "$APP_DIR" set -a . ./.env set +a export MYSQL_PWD="$MYSQL_PASSWORD" mysqldump --single-transaction --quick --no-tablespaces \ -h"$MYSQL_HOST" -P"${MYSQL_PORT:-3306}" -u"$MYSQL_USER" "$MYSQL_DATABASE" \ | gzip > "$OUT" unset MYSQL_PWD gzip -t "$OUT" # 只清理本脚本生成的 db_*.sql.gz,保留 14 天 find "$BACKUP_DIR" -maxdepth 1 -name 'db_*.sql.gz' -type f -mtime +14 -delete echo "[$(date '+%F %T')] backup ok: $OUT ($(du -h "$OUT" | cut -f1))"