at-confluence-backup/archive-tar.sh
2022-10-31 08:35:12 -07:00

69 lines
2.5 KiB
Bash

# -------------------------------------------------------------------------------------
# An archive strategy using Tar and Gzip
# -------------------------------------------------------------------------------------
check_command "tar"
function archive_backup {
check_config_var "CONFLUENCE_BACKUP_ARCHIVE_ROOT"
check_config_var "INSTANCE_NAME"
check_config_var "CONFLUENCE_BACKUP_ROOT"
mkdir -p "${CONFLUENCE_BACKUP_ARCHIVE_ROOT}"
CONFLUENCE_BACKUP_ARCHIVE_NAME="${INSTANCE_NAME}-${TIMESTAMP}.tar.gz"
run tar -czf "${CONFLUENCE_BACKUP_ARCHIVE_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}" -C "${CONFLUENCE_BACKUP_ROOT}" .
}
function prepare_restore_archive {
CONFLUENCE_BACKUP_ARCHIVE_NAME=$1
CONFLUENCE_RESTORE_HOME=${CONFLUENCE_BACKUP_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}/CONFLUENCE-home
CONFLUENCE_RESTORE_DB=${CONFLUENCE_BACKUP_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}/CONFLUENCE-home
if [ -z "${CONFLUENCE_BACKUP_ARCHIVE_NAME}" ]; then
print "Usage: $0 <backup-snapshot>"
if [ ! -d "${CONFLUENCE_BACKUP_ARCHIVE_ROOT}" ]; then
error "'${CONFLUENCE_BACKUP_ARCHIVE_ROOT}' does not exist!"
else
available_backups
fi
exit 99
fi
if [ ! -f "${CONFLUENCE_RESTORE_HOME}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}.tgz" ]; then
error "'${CONFLUENCE_RESTORE_HOME}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}.tgz' does not exist!"
available_backups
exit 99
fi
# Setup restore paths
CONFLUENCE_RESTORE_ROOT=$(mktemp -d /tmp/confluence.diy-restore.XXXXXX)
CONFLUENCE_RESTORE_DB="${CONFLUENCE_RESTORE_ROOT}/archive/CONFLUENCE-db"
CONFLUENCE_RESTORE_HOME="${CONFLUENCE_RESTORE_ROOT}/confluence"
}
function copy_archive_to_tmp {
rsync -ah ${CONFLUENCE_BACKUP_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}/ ${CONFLUENCE_RESTORE_ROOT}/archive/
}
function restore_archive {
check_config_var "CONFLUENCE_BACKUP_ARCHIVE_ROOT"
check_var "CONFLUENCE_BACKUP_ARCHIVE_NAME"
check_var "CONFLUENCE_RESTORE_ROOT"
run tar --strip-components=2 -xzf "${CONFLUENCE_RESTORE_ROOT}/archive/CONFLUENCE-home/${CONFLUENCE_BACKUP_ARCHIVE_NAME}.tgz" -C "${CONFLUENCE_RESTORE_ROOT}"
}
function cleanup_old_archives {
# Cleanup of old backups is not currently implemented
no_op
}
function available_backups {
check_config_var "CONFLUENCE_BACKUP_ARCHIVE_ROOT"
print "Available backups:"
# Drop the .tar.gz extension, to make it a backup identifier
ls "${CONFLUENCE_BACKUP_ARCHIVE_ROOT}" | sed -e 's/\.tgz$//g'
}