Server Management

Automated Database Backups

November 02, 2025 1 min read 5,694 views Tutorial

Why Automated Backups Matter

A corrupted database or accidental deletion can wipe out your entire subscriber list and campaign history. Automated daily backups take minutes to set up and can save hours of recovery work.

The Backup Script

Create /home/vbrand/scripts/backup-db.sh:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/vbrand/backups/db"
DB_NAME="acellemail"
DB_USER="vbrand"
DB_PASS="yourpassword"
KEEP_DAYS=14

mkdir -p "\$BACKUP_DIR"

mysqldump -u"\$DB_USER" -p"\$DB_PASS" "\$DB_NAME" \
  --single-transaction --quick --lock-tables=false \
  | gzip > "\$BACKUP_DIR/\$DB_NAME_\$DATE.sql.gz"

# Remove backups older than KEEP_DAYS
find "\$BACKUP_DIR" -name "*.sql.gz" -mtime +\$KEEP_DAYS -delete

echo "Backup complete: \$BACKUP_DIR/\$DB_NAME_\$DATE.sql.gz"
chmod +x /home/vbrand/scripts/backup-db.sh

Schedule with Cron

crontab -e

Add:

0 2 * * * /home/vbrand/scripts/backup-db.sh >> /home/vbrand/logs/backup.log 2>&1

This runs at 2:00 AM daily.

Offsite Backup

For safety, copy backups to an S3 bucket:

aws s3 sync /home/vbrand/backups/db s3://your-bucket/acellemail-backups/

Restoring from Backup

gunzip < /home/vbrand/backups/db/acellemail_20260301_020000.sql.gz \
  | mysql -uvbrand -p acellemail
A

AcelleMail Team