add hanamgr option to backup

This commit is contained in:
2026-04-16 18:35:37 +02:00
parent 20a632eca7
commit e410ee770b
2 changed files with 77 additions and 4 deletions
+76 -3
View File
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# Version: 1.4.0 # Version: 1.5.0
# Author: Tomi Eckert # Author: Tomi Eckert
# ============================================================================== # ==============================================================================
# HANA Database Manager Menu (hanamgr.sh) # HANA Database Manager Menu (hanamgr.sh)
@@ -349,6 +349,75 @@ do_copy() {
rm -rf "$temp_export_dir" rm -rf "$temp_export_dir"
} }
do_backup() {
echo -e "\n\033[1m=== Backup Tenant ===\033[0m"
read -p "Enter Target Directory Path: " target_path
local max_threads=$(nproc --all 2>/dev/null || echo 1)
local half_threads=$((max_threads / 2))
[[ $half_threads -lt 1 ]] && half_threads=1
read -p "Number of threads for compression (default: $half_threads, max: $max_threads): " threads
threads=${threads:-$half_threads}
read -p "Compress output as tar.gz? (y/N): " compress
if [[ -z "$GLOBAL_USER_KEY" || -z "$target_path" ]]; then
echo -e "\033[31m[❌] Error: Key and Path are required.\033[0m"
return
fi
# Get tenant name
local tenant_query="SELECT DATABASE_NAME FROM SYS.M_DATABASES;"
local tenant_name
tenant_name=$("$HDBSQL_CMD" -U "$GLOBAL_USER_KEY" "$tenant_query" 2>/dev/null | tail -n +2 | head -n 1 | tr -d '[:space:]' | tr -d '"')
if [[ -z "$tenant_name" ]]; then
echo -e "\033[31m[❌] Error: Could not retrieve HANA tenant name.\033[0m"
return
fi
local timestamp=$(date +%Y%m%d_%H%M%S)
local backup_target_dir="$target_path"
local archive_file=""
if [[ "$compress" =~ ^[Yy]$ ]]; then
backup_target_dir=$(mktemp -d "${target_path}/${tenant_name}_backup_${timestamp}_XXXXXXXX")
archive_file="${target_path}/${tenant_name}_backup_${timestamp}.tar.gz"
echo "[️] Using temporary backup directory: ${backup_target_dir}"
fi
mkdir -p "$backup_target_dir"
local backup_path_prefix="${backup_target_dir}/backup_${tenant_name}_${timestamp}"
echo -e "\n[💾] Starting backup of tenant '${tenant_name}'..."
local query="BACKUP DATA USING FILE ('${backup_path_prefix}')"
if execute_sql "$GLOBAL_USER_KEY" "$query"; then
echo -e "\033[32m[✅] Successfully initiated tenant backup.\033[0m"
if [[ "$compress" =~ ^[Yy]$ ]]; then
echo "[📦] Compressing backup to ${archive_file}..."
if command -v pigz &> /dev/null; then
tar -I "pigz -p $threads" -cf "$archive_file" -C "$backup_target_dir" .
else
tar -czf "$archive_file" -C "$backup_target_dir" .
fi
if [ $? -eq 0 ]; then
echo -e "\033[32m[✅] Compression successful.\033[0m"
rm -rf "$backup_target_dir"
else
echo -e "\033[31m[❌] Error: Compression failed.\033[0m"
fi
fi
else
echo -e "\033[31m[❌] Error: Backup failed.\033[0m"
if [[ "$compress" =~ ^[Yy]$ ]]; then rm -rf "$backup_target_dir"; fi
fi
}
do_rename_db() { do_rename_db() {
echo -e "\n\033[1m=== Rename Database (Company Name) ===\033[0m" echo -e "\n\033[1m=== Rename Database (Company Name) ===\033[0m"
select_schema "$GLOBAL_USER_KEY" select_schema "$GLOBAL_USER_KEY"
@@ -400,9 +469,10 @@ while true; do
echo "4) Copy Schema" echo "4) Copy Schema"
echo "5) Drop Schema" echo "5) Drop Schema"
echo "6) Rename Database (Update Company Name)" echo "6) Rename Database (Update Company Name)"
echo "7) Quit" echo "7) Backup Tenant"
echo "8) Quit"
echo echo
read -p "Please select an option (1-7): " choice read -p "Please select an option (1-8): " choice
case $choice in case $choice in
1) 1)
@@ -424,6 +494,9 @@ while true; do
do_rename_db do_rename_db
;; ;;
7) 7)
do_backup
;;
8)
echo "[👋] Exiting." echo "[👋] Exiting."
exit 0 exit 0
;; ;;
+1 -1
View File
@@ -16,4 +16,4 @@ SCRIPT_PACKAGES["monitor"]="Monitor Suite|1.3.1|Scripts for monitoring system he
SCRIPT_PACKAGES["keymanager"]="Key Manager|1.2.3|A utility for managing HDB user keys for SAP HANA.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/keymanager.sh" SCRIPT_PACKAGES["keymanager"]="Key Manager|1.2.3|A utility for managing HDB user keys for SAP HANA.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/keymanager.sh"
SCRIPT_PACKAGES["cleaner"]="File Cleaner|1.1.0|A simple script to clean up temporary files and logs.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/cleaner.sh" SCRIPT_PACKAGES["cleaner"]="File Cleaner|1.1.0|A simple script to clean up temporary files and logs.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/cleaner.sh"
SCRIPT_PACKAGES["hanatool"]="HANA Tool|1.6.0|A command-line tool for various SAP HANA administration tasks.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanatool.sh" SCRIPT_PACKAGES["hanatool"]="HANA Tool|1.6.0|A command-line tool for various SAP HANA administration tasks.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanatool.sh"
SCRIPT_PACKAGES["hanamgr"]="HANA Manager UI|1.4.0|An interactive command-line menu for managing SAP HANA schemas and databases.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanamgr.sh" SCRIPT_PACKAGES["hanamgr"]="HANA Manager UI|1.5.0|An interactive command-line menu for managing SAP HANA schemas and databases.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanamgr.sh"