#!/usr/bin/env bash # # 备份 PostgreSQL 与 uploads 目录 # 版权所有 (c) 马建军 # set -euo pipefail INSTALL_DIR="${INSTALL_DIR:-/opt/secondary-school-grade-archive}" BACKUP_DIR="${BACKUP_DIR:-${INSTALL_DIR}/backups}" TIMESTAMP=$(date +%Y%m%d_%H%M%S) cd "${INSTALL_DIR}" mkdir -p "${BACKUP_DIR}" echo "[INFO] 备份数据库…" docker compose --env-file .env exec -T db \ pg_dump -U "${POSTGRES_USER:-postgres}" "${POSTGRES_DB:-student_archive}" \ > "${BACKUP_DIR}/db_${TIMESTAMP}.sql" echo "[INFO] 备份 uploads…" tar -czf "${BACKUP_DIR}/uploads_${TIMESTAMP}.tar.gz" -C "${INSTALL_DIR}" uploads/ echo "[INFO] 备份完成:" echo " ${BACKUP_DIR}/db_${TIMESTAMP}.sql" echo " ${BACKUP_DIR}/uploads_${TIMESTAMP}.tar.gz"