#!/bin/bash # LuckyChit Database Backup Script # Backs up PostgreSQL database with timestamped filename set -e # Configuration DB_NAME="luckychit" DB_USER="luckychit" DB_HOST="localhost" BACKUP_DIR="/home/luckychit/backups" RETENTION_DAYS=7 # Keep backups for 7 days # Create backup directory if it doesn't exist mkdir -p "$BACKUP_DIR" # Generate timestamp TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="$BACKUP_DIR/luckychit_backup_$TIMESTAMP.sql" echo "๐Ÿ—„๏ธ Starting database backup..." echo "Database: $DB_NAME" echo "Backup file: $BACKUP_FILE" echo "" # Perform backup pg_dump -U "$DB_USER" -h "$DB_HOST" "$DB_NAME" > "$BACKUP_FILE" # Check if backup was successful if [ $? -eq 0 ]; then # Get file size FILE_SIZE=$(du -h "$BACKUP_FILE" | cut -f1) echo "โœ… Backup completed successfully!" echo "๐Ÿ“ฆ File size: $FILE_SIZE" echo "๐Ÿ“ Location: $BACKUP_FILE" # Compress backup (optional) echo "" echo "๐Ÿ—œ๏ธ Compressing backup..." gzip "$BACKUP_FILE" COMPRESSED_FILE="$BACKUP_FILE.gz" COMPRESSED_SIZE=$(du -h "$COMPRESSED_FILE" | cut -f1) echo "โœ… Compression completed!" echo "๐Ÿ“ฆ Compressed size: $COMPRESSED_SIZE" echo "๐Ÿ“ Location: $COMPRESSED_FILE" # Remove old backups echo "" echo "๐Ÿงน Cleaning up old backups (older than $RETENTION_DAYS days)..." DELETED_COUNT=$(find "$BACKUP_DIR" -name "luckychit_backup_*.sql.gz" -mtime +$RETENTION_DAYS -delete -print | wc -l) if [ "$DELETED_COUNT" -gt 0 ]; then echo "โœ… Deleted $DELETED_COUNT old backup(s)" else echo "โœ… No old backups to delete" fi # Show remaining backups echo "" echo "๐Ÿ“Š Current backups:" ls -lh "$BACKUP_DIR"/luckychit_backup_*.sql.gz 2>/dev/null || echo "No backups found" echo "" echo "โœ… Backup process completed successfully!" else echo "โŒ Backup failed!" exit 1 fi