add hanamgr option to backup
This commit is contained in:
+76
-3
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Version: 1.4.0
|
||||
# Version: 1.5.0
|
||||
# Author: Tomi Eckert
|
||||
# ==============================================================================
|
||||
# HANA Database Manager Menu (hanamgr.sh)
|
||||
@@ -349,6 +349,75 @@ do_copy() {
|
||||
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() {
|
||||
echo -e "\n\033[1m=== Rename Database (Company Name) ===\033[0m"
|
||||
select_schema "$GLOBAL_USER_KEY"
|
||||
@@ -400,9 +469,10 @@ while true; do
|
||||
echo "4) Copy Schema"
|
||||
echo "5) Drop Schema"
|
||||
echo "6) Rename Database (Update Company Name)"
|
||||
echo "7) Quit"
|
||||
echo "7) Backup Tenant"
|
||||
echo "8) Quit"
|
||||
echo
|
||||
read -p "Please select an option (1-7): " choice
|
||||
read -p "Please select an option (1-8): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
@@ -424,6 +494,9 @@ while true; do
|
||||
do_rename_db
|
||||
;;
|
||||
7)
|
||||
do_backup
|
||||
;;
|
||||
8)
|
||||
echo "[👋] Exiting."
|
||||
exit 0
|
||||
;;
|
||||
|
||||
+1
-1
@@ -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["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["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"
|
||||
|
||||
Reference in New Issue
Block a user