dotfiles/local-bin/.local/bin/dbeaver-restore.sh
2025-04-21 12:17:14 -03:00

72 lines
2.4 KiB
Bash
Executable file

#!/bin/bash
# DBeaver Profile Restore Script
# This script restores a DBeaver backup created with the backup script
# Configuration variables - modify as needed
BACKUP_DIR="/home/forbi/Sync/Backups"
HOSTNAME=main
BACKUP_FILE="dbeaver_backup_${HOSTNAME}.tar.gz"
LOG_FILE="$BACKUP_DIR/dbeaver_restore_log.txt"
# DBeaver configuration location
DBEAVER_DATA="$HOME/.local/share/DBeaverData"
# Start logging
echo "===== DBeaver Restore Started at $(date) =====" >>"$LOG_FILE"
# Check if backup file exists
if [ ! -f "$BACKUP_DIR/$BACKUP_FILE" ]; then
echo "Error: Backup file not found at $BACKUP_DIR/$BACKUP_FILE" | tee -a "$LOG_FILE"
exit 1
fi
# Check if DBeaver data directory exists and create backup if it does
if [ -d "$DBEAVER_DATA" ]; then
echo "DBeaver data directory exists. Creating backup before restoration..." | tee -a "$LOG_FILE"
TEMP_BACKUP="${DBEAVER_DATA}_backup_$(date +%Y%m%d_%H%M%S)"
mv "$DBEAVER_DATA" "$TEMP_BACKUP"
echo "Original data backed up to: $TEMP_BACKUP" | tee -a "$LOG_FILE"
fi
# Create temporary directory for extraction
TEMP_DIR=$(mktemp -d)
echo "Created temporary directory for extraction: $TEMP_DIR" >>"$LOG_FILE"
# Extract backup file
echo "Extracting backup archive..." | tee -a "$LOG_FILE"
tar -xzf "$BACKUP_DIR/$BACKUP_FILE" -C "$TEMP_DIR"
EXTRACT_RESULT=$?
if [ $EXTRACT_RESULT -ne 0 ]; then
echo "Error: Failed to extract backup with exit code $EXTRACT_RESULT" | tee -a "$LOG_FILE"
rm -rf "$TEMP_DIR"
exit 1
fi
# Create target directory if it doesn't exist
mkdir -p "$(dirname "$DBEAVER_DATA")"
# Copy extracted content to DBeaver data directory
echo "Restoring DBeaver data to $DBEAVER_DATA..." | tee -a "$LOG_FILE"
cp -r "$TEMP_DIR/DBeaverData" "$(dirname "$DBEAVER_DATA")/"
RESTORE_RESULT=$?
# Clean up temporary directory
echo "Cleaning up temporary files..." >>"$LOG_FILE"
rm -rf "$TEMP_DIR"
# Check if restore was successful
if [ $RESTORE_RESULT -eq 0 ]; then
echo "Restore completed successfully to: $DBEAVER_DATA" | tee -a "$LOG_FILE"
echo "You may need to restart DBeaver for changes to take effect." | tee -a "$LOG_FILE"
else
echo "Error: Restore failed with exit code $RESTORE_RESULT" | tee -a "$LOG_FILE"
if [ -d "$TEMP_BACKUP" ]; then
echo "Attempting to restore original data from backup..." | tee -a "$LOG_FILE"
rm -rf "$DBEAVER_DATA"
mv "$TEMP_BACKUP" "$DBEAVER_DATA"
echo "Original data restored from backup." | tee -a "$LOG_FILE"
fi
fi
echo "===== DBeaver Restore Finished at $(date) =====" >>"$LOG_FILE"