Skip to content

Instantly share code, notes, and snippets.

@mjones129
Last active August 13, 2024 21:05
Show Gist options
  • Save mjones129/09d8bd84d15d82927dce2d825b9692a8 to your computer and use it in GitHub Desktop.
Save mjones129/09d8bd84d15d82927dce2d825b9692a8 to your computer and use it in GitHub Desktop.
WordPress Backups
#!/bin/bash
## exit script on error
set -e
# Variables
WP_PATH="/var/www/html"
BACKUP_PATH="/opt/backups"
DATE=$(date +"%Y-%m-%d")
BACKUP_DIR="${BACKUP_PATH}/${DATE}-backup"
LOG_FILE="/var/log/wp-backup.log"
REMOTE_DIR="b2:mjtwp-backups/mattjonestech/"
# logging function
log() {
echo "$(date +"%Y-%m-%d %H:%M:%S") - $1" | tee -a "$LOG_FILE"
}
log "Backup started."
# ensure backup directory exists before running
mkdir -p "$BACKUP_DIR"
log "Created backup directory: $BACKUP_DIR"
cd "$WP_PATH"
# database dump
wp db export "${BACKUP_DIR}/database.sql"
log "Database export complete."
# compress wp-content
tar -cvf "${BACKUP_DIR}/wp-content.tar" -C "$WP_PATH" wp-content
log "Compression of wp-content complete."
# compress full backup
tar -cvf "${BACKUP_PATH}/${DATE}-backup.tar" -C "$BACKUP_PATH" "${DATE}-backup"
log "Full backup compression complete."
# copy to Backblaze
rclone copy "${BACKUP_PATH}/${DATE}-backup.tar" b2:backup-bucket/site-name/ --verbose
log "Backup uploaded to Backblaze."
# clean up
rm -rf "${BACKUP_DIR}"
rm -f "${BACKUP_PATH}/${DATE}-backup.tar"
log "Temporary backup files removed."
log "Backup complete."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment