Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save thegulshankumar/219cd9ebd2108c1d3029a6a578236675 to your computer and use it in GitHub Desktop.
Save thegulshankumar/219cd9ebd2108c1d3029a6a578236675 to your computer and use it in GitHub Desktop.
Backup WordPress at BunnyCDN Edge Storage
#!/bin/bash
# Define variables
WORDPRESS_ABSPATH="/var/www/html"
BUNNYCDN_EDGE_STORAGE_ZONE_URL="https://storage.bunnycdn.com"
BUNNYCDN_EDGE_STORAGE_NAME="example-org-backup"
BUNNYCDN_EDGE_STORAGE_PASSWORD="ENTER-STORAGE-SPECIFIC-PASSWORD-HERE-NOT-ACCOUNT-API"
# Check if WP CLI is installed
if ! command -v wp &> /dev/null
then
# Install WP CLI
echo "WP CLI is not installed. Installing now..."
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
fi
# Step 1: Create database export
cd "$WORDPRESS_ABSPATH"
site_url=$(wp option get siteurl --allow-root)
site_name=$(echo "$site_url" | awk -F/ '{print $3}' | sed 's/[\/\.]/-/g')
db_filename="$site_name-db-$(date +%d-%B-%Y-%H%M%S)-$(openssl rand -hex 5).sql"
wp db export --allow-root "$db_filename"
# Step 2: Create full backup
site_name=$(echo "$site_url" | awk -F/ '{print $3}' | sed 's/[\/\.]/-/g')
backup_filename="$site_name-full-backup-$(date +%d-%B-%Y-%H%M%S)-$(openssl rand -hex 5).tar.gz"
tar -zcvf "$backup_filename" *
# Step 3: Upload backup to BunnyCDN
# backup_url="$site_url/$backup_filename"
curl --request PUT \
--url "$BUNNYCDN_EDGE_STORAGE_ZONE_URL/$BUNNYCDN_EDGE_STORAGE_NAME/$backup_filename" \
--header "AccessKey: $BUNNYCDN_EDGE_STORAGE_PASSWORD" \
--header 'Content-Type: application/gzip' \
--data-binary @"$backup_filename"
# Step 4: Delete the backup files from the server to save disk space
rm "$db_filename"
rm "$backup_filename"
echo
echo -e "\033[93mBackup process has finished!\033[0m"
@thegulshankumar
Copy link
Author

Backup at 00:00 on every Sunday.

0 0 * * SUN /root/backup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment