Skip to content

Instantly share code, notes, and snippets.

@simonesestito
Created September 29, 2022 19:23
Show Gist options
  • Save simonesestito/cfc3b2b1d71168ac7f43c44714e40869 to your computer and use it in GitHub Desktop.
Save simonesestito/cfc3b2b1d71168ac7f43c44714e40869 to your computer and use it in GitHub Desktop.
Backup WordPress Docker instance
#!/bin/bash
#
# RESTORE COMMANDS
#
# Database:
# cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE
#
# Files:
# JOIN parts with cat filename.tar.gz.* > filename.tar.gz
# Restore WITH SUDO to keep permissions and ownership!
#
set -e
set -x
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
cd "$DIR"
DB_CONTAINER=testwp-db-1
DB_BACKUP_FILE=backup.sql
WORDPRESS_BACKUP_FILE="$(date '+%Y_%m_%d_%H_%M').tar.gz"
# Set env vars
source .env
# Backup MySQL
docker exec "$DB_CONTAINER" \
/usr/bin/mysqldump \
-u root \
"--password=$MYSQL_ROOT_PASSWORD" \
"$MYSQL_DATABASE" \
> "$DB_BACKUP_FILE"
# Backup WordPress files
sudo tar czf \
- \
wp_data/ \
"$DB_BACKUP_FILE" \
| pv \
> "$WORDPRESS_BACKUP_FILE"
rm "$DB_BACKUP_FILE"
# Upload backup
split \
-b 45m \
-d "$WORDPRESS_BACKUP_FILE" \
"$WORDPRESS_BACKUP_FILE."
for part in $WORDPRESS_BACKUP_FILE.??; do
curl \
--fail \
-F document=@"$part" \
"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendDocument?chat_id=$TELEGRAM_CHANNEL_ID"
echo
done
rm \
"$WORDPRESS_BACKUP_FILE" \
$WORDPRESS_BACKUP_FILE.??
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment