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.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs