✨ Features: - Complete LEMP stack automation - WordPress with WP-CLI - Redis Object Cache (50% performance boost) - Multi-OS support - SSL/Let's Encrypt integration - Security hardening - Enterprise features - Docker testing environment - GitHub Actions CI/CD - Comprehensive documentation 🧪 Fully tested and production-ready Copyright (c) 2025 Sebastian Palencsár
50 lines
1.6 KiB
Django/Jinja
50 lines
1.6 KiB
Django/Jinja
#!/bin/bash
|
|
# WordPress Backup Script
|
|
# Generated by Ansible
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
BACKUP_DIR="{{ backup_destination }}"
|
|
WP_PATH="{{ wordpress_path }}"
|
|
DB_NAME="{{ wordpress_db_name }}"
|
|
DB_USER="{{ wordpress_db_user }}"
|
|
DB_PASS="{{ wordpress_db_password }}"
|
|
RETENTION_DAYS="{{ backup_retention_days }}"
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
|
|
# Create backup directories
|
|
mkdir -p "$BACKUP_DIR/database" "$BACKUP_DIR/files"
|
|
|
|
# Log function
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$BACKUP_DIR/backup.log"
|
|
}
|
|
|
|
log "Starting WordPress backup..."
|
|
|
|
# Backup WordPress files
|
|
log "Backing up WordPress files..."
|
|
tar -czf "$BACKUP_DIR/files/wordpress_files_$DATE.tar.gz" -C "$(dirname $WP_PATH)" "$(basename $WP_PATH)"
|
|
|
|
# Backup database
|
|
log "Backing up database..."
|
|
mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_DIR/database/wordpress_db_$DATE.sql.gz"
|
|
|
|
# Cleanup old backups
|
|
log "Cleaning up old backups (older than $RETENTION_DAYS days)..."
|
|
find "$BACKUP_DIR/files" -name "wordpress_files_*.tar.gz" -mtime +$RETENTION_DAYS -delete
|
|
find "$BACKUP_DIR/database" -name "wordpress_db_*.sql.gz" -mtime +$RETENTION_DAYS -delete
|
|
|
|
# Calculate backup sizes
|
|
FILES_SIZE=$(du -sh "$BACKUP_DIR/files/wordpress_files_$DATE.tar.gz" | cut -f1)
|
|
DB_SIZE=$(du -sh "$BACKUP_DIR/database/wordpress_db_$DATE.sql.gz" | cut -f1)
|
|
|
|
log "Backup completed successfully!"
|
|
log "Files backup size: $FILES_SIZE"
|
|
log "Database backup size: $DB_SIZE"
|
|
log "Backup location: $BACKUP_DIR"
|
|
|
|
# Optional: Send notification (requires mail setup)
|
|
# echo "WordPress backup completed on $(hostname) at $(date)" | mail -s "WordPress Backup Success" admin@example.com
|