BASH
Automate Daily Database Backups
Learn to automate daily database backups for MySQL or PostgreSQL, compressing and timestamping them for easy recovery and storage in web development.
#!/bin/bash
# Configuration
DB_USER="your_db_user"
DB_PASS="your_db_password"
DB_NAME="your_database_name"
BACKUP_DIR="/var/backups/databases"
DATE=$(date +%Y%m%d_%H%M%S)
# Create backup directory if it doesn't exist
mkdir -p $BACKUP_DIR
# Perform backup (MySQL example)
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME-$DATE.sql.gz
# Or for PostgreSQL:
# pg_dump -U $DB_USER $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME-$DATE.sql.gz
if [ $? -eq 0 ]; then
echo "Database backup successful: $BACKUP_DIR/$DB_NAME-$DATE.sql.gz"
else
echo "Database backup FAILED!" >&2
exit 1
fi
# Optional: Clean up old backups (e.g., keep last 7 days)
find $BACKUP_DIR -type f -name "$DB_NAME-*.sql.gz" -mtime +7 -delete
How it works: This script automates database backups. It sets configuration variables for the database user, password, name, and backup directory. It creates a timestamped, compressed SQL dump (using `mysqldump` for MySQL or `pg_dump` for PostgreSQL) and saves it to the specified directory. It also includes an optional step to delete backups older than 7 days, ensuring disk space is managed. This script can be scheduled with cron for regular, automated backups.