From 1e372141f1de277b980cad0096efa80a4bec2874 Mon Sep 17 00:00:00 2001
From: tteckster <tteckster@gmail.com>
Date: Thu, 7 Sep 2023 16:06:51 -0400
Subject: [PATCH] Create host-backup.sh

---
 misc/host-backup.sh | 61 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 misc/host-backup.sh

diff --git a/misc/host-backup.sh b/misc/host-backup.sh
new file mode 100644
index 000000000..9a681d7a8
--- /dev/null
+++ b/misc/host-backup.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2023 tteck
+# Author: tteck (tteckster)
+# License: MIT
+# https://github.com/tteck/Proxmox/raw/main/LICENSE
+
+function header_info {
+    clear
+cat <<"EOF"
+   __ __         __    ___           __
+  / // /__  ___ / /_  / _ )___ _____/ /____ _____
+ / _  / _ \(_-</ __/ / _  / _ `/ __/  '_/ // / _ \
+/_//_/\___/___/\__/ /____/\_,_/\__/_/\_\\_,_/ .__/
+                                           /_/
+EOF
+}
+header_info
+while true; do
+  read -p "This will Backup Selected Directories. Proceed (y/n)?" yn
+  case $yn in
+  [Yy]*) break ;;
+  [Nn]*) exit ;;
+  *) echo "Please answer yes or no." ;;
+  esac
+done
+header_info
+
+BACKUP_PATH="/root/"
+BACKUP_FILE="$(hostname)-host-backup"
+selected_directories=()
+
+while read -r dir; do
+  DIRNAME=$(basename "$dir")
+  OFFSET=2
+  if [[ $((${#DIRNAME} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
+    MSG_MAX_LENGTH=$((${#DIRNAME} + $OFFSET))
+  fi
+  CTID_MENU+=("$DIRNAME" "$dir " "OFF")
+done < <(ls -d /etc/*/)
+
+while [ -z "${HOST_BACKUP:+x}" ]; do
+  HOST_BACKUP=$(whiptail --title "Select Directories" --checklist \
+    "\nSelect what directories to backup:\n" \
+    16 $(($MSG_MAX_LENGTH + 38)) 6 \
+    "${CTID_MENU[@]}" 3>&1 1>&2 2>&3) || exit
+
+  for selected_dir in ${HOST_BACKUP//\"}; do
+    selected_directories+=("/etc/$selected_dir")
+  done
+done
+
+selected_directories_string=$(printf "%s " "${selected_directories[@]}")
+header_info
+echo -e "This will create backups for the directories \e[1;33m ${selected_directories_string% } \e[0m"
+read -p "Press ENTER to continue..."
+header_info
+tar -czf $BACKUP_PATH$BACKUP_FILE-$(date +%Y_%m_%d).tar.gz --absolute-names ${selected_directories_string% }
+
+echo -e "\nFinished"
+echo -e "\e[1;33m \nA backup is rendered ineffective when it remains stored on the host.\n \e[0m"