Borg backup of WordPress
This Borg Backup script backsup WordPress files and DB while ignoring cache folders.
mysql backup is performed using the wp-cli
#!/bin/bash
# Borg backup a WordPress site to local and rsync.net
# Needs wp-cli, borg and a repo on rsync.net
# SSH keys must be setup for passwordless login to rsync.net
# Create a local backup and a remote backup to rsync.net
# Exclude WordPress cache folders
SITE="poornalayam.org"
DBNAME="poorna_wp"
HOSTNAME="poorna"
BASEDIR="/home/${SITE}"
REPO="/home/backup/${HOSTNAME}"
REMOTEREPO="1140@rsync.rsubr.in:${HOSTNAME}-repo"
# We need to set this to call borg 1.x on rsync.net server side
export BORG_REMOTE_PATH=/usr/local/bin/borg1/borg1
MYSQLDUMP_FILE="${BASEDIR}/mysqlbackup/${DBNAME}.sql"
# Use wp-cli to dump mysql
wp db export --allow-root --path=${BASEDIR}/www ${MYSQLDUMP_FILE}
# Exclude W3TotalCache cache folders from backup
borg create -s -C lzma,5 -e 're:/wp-content/cache/[^/]+/.+' ${REPO}::${HOSTNAME}-wp-{now:%Y-%m-%d} ${BASEDIR}
borg create -s -C lzma,5 -e 're:/wp-content/cache/[^/]+/.+' ${REMOTEREPO}::${HOSTNAME}-wp-{now:%Y-%m-%d} ${BASEDIR}