69 lines
2.5 KiB
Bash
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'
|
|
}
|