#!/usr/bin/env bash
# Automated backup for local SeedVault site
# Backs up DB, wp-config.php, and plugin directory to ~/seedvault-backup-TIMESTAMP/
# Keeps last 5 backups to avoid disk bloat
set -euo pipefail
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/vincent/seedvault-backup-${TIMESTAMP}"
WP_DIR="/var/www/seedvault-local"
mkdir -p "${BACKUP_DIR}"
# 1. Database dump
mysqldump -u seedvault -p'seedvault_local_pass_2026' seedvault_local 2>/dev/null \
| gzip > "${BACKUP_DIR}/db.sql.gz"
# 2. Config
cp "${WP_DIR}/wp-config.php" "${BACKUP_DIR}/"
# 3. Plugins (active only — skip large uploads)
rsync -a --filter='+- */' \
--filter='+ */woocommerce/' \
--filter='+ */litespeed-cache/' \
--filter='+ */mailpoet/' \
--filter='+ */wordpress-seo/' \
--filter='+ */seedvault-trust-badges/' \
--filter='- *' \
"${WP_DIR}/wp-content/plugins/" "${BACKUP_DIR}/plugins/" 2>/dev/null || true
# 4. Cleanup: keep only last 5 backups
cd /home/vincent/
ls -dt seedvault-backup-* 2>/dev/null | tail -n +6 | xargs -r rm -rf
# 5. Report
DB_SIZE=$(du -h "${BACKUP_DIR}/db.sql.gz" | cut -f1)
TOTAL=$(du -sh "${BACKUP_DIR}" | cut -f1)
echo "Backup complete: ${BACKUP_DIR} (${TOTAL}) — DB: ${DB_SIZE}"