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"