Initial project commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
# Database backup script for ciyuan_viewfinder
|
||||
# Usage: ./scripts/backup_db.sh
|
||||
# Recommended: add to crontab for daily backups
|
||||
# Example crontab: 0 3 * * * /path/to/server/scripts/backup_db.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
SERVER_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
# Load .env
|
||||
if [ -f "$SERVER_DIR/.env" ]; then
|
||||
export $(grep -v '^#' "$SERVER_DIR/.env" | xargs)
|
||||
fi
|
||||
|
||||
DB_HOST="${DB_HOST:-10.0.10.11}"
|
||||
DB_PORT="${DB_PORT:-5432}"
|
||||
DB_NAME="${DB_NAME:-ciyuan_viewfinder}"
|
||||
DB_USER="${DB_USER:-shiran}"
|
||||
|
||||
BACKUP_DIR="${BACKUP_DIR:-$SERVER_DIR/backups}"
|
||||
RETENTION_DAYS="${RETENTION_DAYS:-30}"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.sql.gz"
|
||||
|
||||
echo "[$(date)] Starting backup of $DB_NAME..."
|
||||
|
||||
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
|
||||
--no-owner --no-acl --format=plain \
|
||||
| gzip > "$BACKUP_FILE"
|
||||
|
||||
echo "[$(date)] Backup saved to $BACKUP_FILE ($(du -sh "$BACKUP_FILE" | cut -f1))"
|
||||
|
||||
# Cleanup old backups
|
||||
find "$BACKUP_DIR" -name "${DB_NAME}_*.sql.gz" -mtime +$RETENTION_DAYS -delete
|
||||
echo "[$(date)] Cleaned up backups older than $RETENTION_DAYS days"
|
||||
|
||||
echo "[$(date)] Backup complete."
|
||||
Reference in New Issue
Block a user