Raja's Exocortex

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}