# ------------------------------------------------------------------------------------- # 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 if [ -z "${CONFLUENCE_BACKUP_ARCHIVE_NAME}" ]; then print "Usage: $0 " 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_BACKUP_ARCHIVE_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}.tar.gz" ]; then error "'${CONFLUENCE_BACKUP_ARCHIVE_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}.tar.gz' 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}/confluence-db" CONFLUENCE_RESTORE_HOME="${CONFLUENCE_RESTORE_ROOT}/confluence-home" CONFLUENCE_RESTORE_DATA_STORES="${CONFLUENCE_RESTORE_ROOT}/confluence-data-stores" } function restore_archive { check_config_var "CONFLUENCE_BACKUP_ARCHIVE_ROOT" check_var "CONFLUENCE_BACKUP_ARCHIVE_NAME" check_var "CONFLUENCE_RESTORE_ROOT" run tar -xzf "${CONFLUENCE_BACKUP_ARCHIVE_ROOT}/${CONFLUENCE_BACKUP_ARCHIVE_NAME}.tar.gz" -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/\.tar\.gz$//g' }