diff --git a/proxmox/backup.pve.content.sh b/proxmox/backup.pve.content.sh new file mode 100755 index 0000000..39cd420 --- /dev/null +++ b/proxmox/backup.pve.content.sh @@ -0,0 +1,132 @@ +#!/bin/sh + +# This script will backup /etc/pve content : +# 1. Make a tar to /etc/proxmox.pve/backup/ + +# This script can be call by a cronjob (eg. daily). + +# Vars {{{ +readonly PROGNAME=$(basename "${0}") +readonly PROGDIR=$(readlink -m $(dirname "${0}")) +readonly ARGS="${*}" +readonly NBARGS="${#}" +[ -z "${DEBUG}" ] && DEBUG=1 + +readonly DEFAULT_LOCAL_BKP_DIR="/etc/proxmox.pve/backup" + +## Colors +readonly PURPLE='\033[1;35m' +readonly RED='\033[0;31m' +readonly RESET='\033[0m' +readonly COLOR_DEBUG="${PURPLE}" +# }}} + +usage() { # {{{ + + cat <<- EOF +usage: $PROGNAME [-d|-h] + +Backup /etc/pve content + +EXAMPLES : + - Backup /etc/pve content to ${DEFAULT_LOCAL_BKP_DIR} directory + ${PROGNAME} + +OPTIONS : + -d,--debug + Enable debug messages. + + -h,--help + Print this help message. + EOF + +} +# }}} +debug_message() { # {{{ + + local_message="${1}" + + ## Print message if DEBUG is enable (=0) + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6b\e[m\n' "DEBUG − ${PROGNAME} : ${local_message}" + + return 0 +} +# }}} +define_vars() { # {{{ + + ## If local_bkp_dir wasn't defined {{{ + if [ -z "${local_bkp_dir}" ]; then + ## Use local host for sge_hostname + local_bkp_dir="${DEFAULT_LOCAL_BKP_DIR}" + fi + ## }}} + +} +# }}} +main() { # {{{ + + ## Define all vars + define_vars + +} +# }}} + +# Manage arguments # {{{ +# This code can't be in a function due to argument management + +if [ ! "${NBARGS}" -eq "0" ]; then + + manage_arg="0" + + ## If the first argument is not an option + if ! printf -- '%s' "${1}" | grep -q -E -- "^-+"; + then + ## Print help message and exit + printf '%b\n' "${RED}Invalid option: ${1}${RESET}" + printf '%b\n' "---" + usage + + exit 1 + fi + + # Parse all options (start with a "-") one by one + while printf -- '%s' "${1}" | grep -q -E -- "^-+"; do + + case "${1}" in + -d|--debug ) ## debug + DEBUG=0 + ;; + -h|--help ) ## help + usage + ## Exit after help informations + exit 0 + ;; + * ) ## unknow option + printf '%b\n' "${RED}Invalid option: ${1}${RESET}" + printf '%b\n' "---" + usage + exit 1 + ;; + esac + + debug_message "Arguments management − \ +${RED}${1}${COLOR_DEBUG} option managed." + + ## Move to the next argument + shift + manage_arg=$((manage_arg+1)) + + done + + debug_message "Arguments management − \ +${RED}${manage_arg}${COLOR_DEBUG} argument(s) successfully managed." +else + debug_message "Arguments management − \ +No arguments/options to manage." +fi + +# }}} + +main + +exit 255