dbeaver-restore.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. # DBeaver Profile Restore Script
  3. # This script restores a DBeaver backup created with the backup script
  4. # Configuration variables - modify as needed
  5. BACKUP_DIR="/home/forbi/Sync/Backups"
  6. HOSTNAME=main
  7. BACKUP_FILE="dbeaver_backup_${HOSTNAME}.tar.gz"
  8. LOG_FILE="$BACKUP_DIR/dbeaver_restore_log.txt"
  9. # DBeaver configuration location
  10. DBEAVER_DATA="$HOME/.local/share/DBeaverData"
  11. # Start logging
  12. echo "===== DBeaver Restore Started at $(date) =====" >>"$LOG_FILE"
  13. # Check if backup file exists
  14. if [ ! -f "$BACKUP_DIR/$BACKUP_FILE" ]; then
  15. echo "Error: Backup file not found at $BACKUP_DIR/$BACKUP_FILE" | tee -a "$LOG_FILE"
  16. exit 1
  17. fi
  18. # Check if DBeaver data directory exists and create backup if it does
  19. if [ -d "$DBEAVER_DATA" ]; then
  20. echo "DBeaver data directory exists. Creating backup before restoration..." | tee -a "$LOG_FILE"
  21. TEMP_BACKUP="${DBEAVER_DATA}_backup_$(date +%Y%m%d_%H%M%S)"
  22. mv "$DBEAVER_DATA" "$TEMP_BACKUP"
  23. echo "Original data backed up to: $TEMP_BACKUP" | tee -a "$LOG_FILE"
  24. fi
  25. # Create temporary directory for extraction
  26. TEMP_DIR=$(mktemp -d)
  27. echo "Created temporary directory for extraction: $TEMP_DIR" >>"$LOG_FILE"
  28. # Extract backup file
  29. echo "Extracting backup archive..." | tee -a "$LOG_FILE"
  30. tar -xzf "$BACKUP_DIR/$BACKUP_FILE" -C "$TEMP_DIR"
  31. EXTRACT_RESULT=$?
  32. if [ $EXTRACT_RESULT -ne 0 ]; then
  33. echo "Error: Failed to extract backup with exit code $EXTRACT_RESULT" | tee -a "$LOG_FILE"
  34. rm -rf "$TEMP_DIR"
  35. exit 1
  36. fi
  37. # Create target directory if it doesn't exist
  38. mkdir -p "$(dirname "$DBEAVER_DATA")"
  39. # Copy extracted content to DBeaver data directory
  40. echo "Restoring DBeaver data to $DBEAVER_DATA..." | tee -a "$LOG_FILE"
  41. cp -r "$TEMP_DIR/DBeaverData" "$(dirname "$DBEAVER_DATA")/"
  42. RESTORE_RESULT=$?
  43. # Clean up temporary directory
  44. echo "Cleaning up temporary files..." >>"$LOG_FILE"
  45. rm -rf "$TEMP_DIR"
  46. # Check if restore was successful
  47. if [ $RESTORE_RESULT -eq 0 ]; then
  48. echo "Restore completed successfully to: $DBEAVER_DATA" | tee -a "$LOG_FILE"
  49. echo "You may need to restart DBeaver for changes to take effect." | tee -a "$LOG_FILE"
  50. else
  51. echo "Error: Restore failed with exit code $RESTORE_RESULT" | tee -a "$LOG_FILE"
  52. if [ -d "$TEMP_BACKUP" ]; then
  53. echo "Attempting to restore original data from backup..." | tee -a "$LOG_FILE"
  54. rm -rf "$DBEAVER_DATA"
  55. mv "$TEMP_BACKUP" "$DBEAVER_DATA"
  56. echo "Original data restored from backup." | tee -a "$LOG_FILE"
  57. fi
  58. fi
  59. echo "===== DBeaver Restore Finished at $(date) =====" >>"$LOG_FILE"