Skip to content

Instantly share code, notes, and snippets.

@rchrd2
Last active June 4, 2025 22:09
Show Gist options
  • Save rchrd2/1595c1c601ab7be84d4aaab633805076 to your computer and use it in GitHub Desktop.
Save rchrd2/1595c1c601ab7be84d4aaab633805076 to your computer and use it in GitHub Desktop.
wp-backup.sh
#!/bin/bash
# === CONFIGURATION ===
WP_DIR="/home/username/yourdomain.com"
BACKUP_DIR="/home/username/backups"
DB_NAME="your_db_name"
DB_USER="your_db_user"
DB_PASS="your_db_password"
DB_HOST="localhost"
DATE=$(date +%Y-%m-%d-%H%M%S)
FILE_BACKUP="$BACKUP_DIR/wp-files-$DATE.zip"
SQL_BACKUP="$BACKUP_DIR/wp-db-$DATE.sql"
# === CREATE BACKUP DIRECTORY IF IT DOESN'T EXIST ===
mkdir -p "$BACKUP_DIR"
# === BACKUP WORDPRESS FILES USING ZIP ===
cd "$WP_DIR" || exit 1
zip -r "$FILE_BACKUP" . > /dev/null
# === BACKUP DATABASE WITHOUT COMPRESSION ===
wp db export "$SQL_BACKUP"
# === DELETE BACKUPS OLDER THAN 7 DAYS ===
find "$BACKUP_DIR" -type f -mtime +7 -name 'wp-*' -delete
# === NOTES FOR RESTORATION ===
# To unzip WordPress files:
# unzip wp-files-YYYY-MM-DD.zip
#
# To view or import SQL backup:
# less wp-db-YYYY-MM-DD.sql
# mysql -u your_db_user -p your_db_name < wp-db-YYYY-MM-DD.sql
#
# === EXAMPLE USAGE ===
# Make executable:
# chmod +x ~/wp-backup.sh
#
# Run manually:
# ~/wp-backup.sh
#
# Add to cron (daily at 2:30 AM):
# crontab -e
# 30 2 * * * /bin/bash /home/username/wp-backup.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment