Skip to content

Instantly share code, notes, and snippets.

@mjones129
Last active November 10, 2024 14:37
Show Gist options
  • Select an option

  • Save mjones129/09d8bd84d15d82927dce2d825b9692a8 to your computer and use it in GitHub Desktop.

Select an option

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/mattjones.tech"
RCLONE_DRIVE_NAME="b2"
BACKUP_PATH="/home/matt/tmp"
DATE=$(date +"%Y-%m-%d")
BACKUP_DIR="${BACKUP_PATH}/${DATE}-backup"
LOG_FILE="/home/matt/backupLogs/mjt-backup.log"
REMOTE_DIR="${RCLONE_DRIVE_NAME}: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 -czvf "${BACKUP_DIR}/wp-content.zip" -C "$WP_PATH" wp-content
log "Compression of wp-content complete."
# compress full backup
tar -czvf "${BACKUP_PATH}/${DATE}-backup.zip" -C "$BACKUP_PATH" "${DATE}-backup"
log "Full backup compression complete."
# copy to Backblaze
rclone copy "${BACKUP_PATH}/${DATE}-backup.zip" ${RCLONE_DRIVE_NAME}:mjtwp-backups/mattjonestech/ --verbose
log "Backup uploaded to Backblaze."
# clean up
rm -rf "${BACKUP_DIR}"
rm -f "${BACKUP_PATH}/${DATE}-backup.zip"
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