Added cli parameters for automation
This commit is contained in:
parent
95cbee6fca
commit
0dbe3e8d48
@ -304,6 +304,189 @@ function check_crontab {
|
||||
|
||||
# main script
|
||||
|
||||
# Available arguments:
|
||||
# -a, --auto: Enable automatic, non-interactive mode
|
||||
# -d, --debug: Enable debug mode
|
||||
# -v, --version: Show script version
|
||||
# -h, --help: Show help message
|
||||
# -n, --no-upgrade: Skip package upgrades
|
||||
# -f, --first-backup: Run the first backup after setup
|
||||
#
|
||||
# -R, --repo: Set the backup repository path
|
||||
# -E, --encryption: Set the encryption method
|
||||
# -P, --passphrase: Set the backup passphrase
|
||||
# -D, --dirs: Set the backup directories (separated by space as a string, for example: --dirs "/etc /var/log /home")
|
||||
# -L, --label: Set the backup label prefix
|
||||
# -S, --schedule: Set the cron schedule
|
||||
#
|
||||
# -H, --host: Set the backup server hostname or IP address
|
||||
# -P, --port: Set the backup server SSH port
|
||||
# -U, --user: Set the backup server SSH user
|
||||
# -W, --password: Set the backup server SSH password
|
||||
# -K, --key-name: Set the SSH key name
|
||||
# -T, --key-type: Set the SSH key type
|
||||
# -F, --key-file: Set the SSH key file path
|
||||
#
|
||||
# Example usage:
|
||||
# ./borgmatic_setup.sh -R "Backups/MyServer" \
|
||||
# -E "none" -P "example" \
|
||||
# -D "/etc /var/log /home" \
|
||||
# -L "BACKUP-" \
|
||||
# -S "0 3 * * *" \
|
||||
# -H "192.168.1.200" \
|
||||
# -P "22" \
|
||||
# -U "root" \
|
||||
# -W "12345678" \
|
||||
# -K "borgmatic" \
|
||||
# -T "ed25519" \
|
||||
# -F "/root/.ssh/borgmatic_ed25519"
|
||||
#
|
||||
# or with long options:
|
||||
# ./borgmatic_setup.sh --repo "Backups/MyServer" \
|
||||
# --encryption "none" --passphrase "example" \
|
||||
# --dirs "/etc /var/log /home" \
|
||||
# --label "BACKUP-" \
|
||||
# --schedule "0 3 * * *" \
|
||||
# --host "192.168.1.200" \
|
||||
# --port "22" \
|
||||
# --user "root" \
|
||||
# --password "12345678"
|
||||
# --key-name "borgmatic" \
|
||||
# --key-type "ed25519" \
|
||||
# --key-file "/root/.ssh/borgmatic_ed25519"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
key="$1"
|
||||
|
||||
case $key in
|
||||
-a|--auto)
|
||||
AUTO=1
|
||||
shift
|
||||
;;
|
||||
-d|--debug)
|
||||
DEBUG=1
|
||||
shift
|
||||
;;
|
||||
-v|--version)
|
||||
echo "$SCRIPT_NAME v$VERSION"
|
||||
exit 0
|
||||
;;
|
||||
-n|--no-upgrade)
|
||||
NO_UPGRADE=1
|
||||
shift
|
||||
;;
|
||||
-f|--first-backup)
|
||||
FIRST_BACKUP=1
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
inf "Usage: borgmatic_setup.sh [options]"
|
||||
inf ""
|
||||
inf "Options will override the default settings set in the script."
|
||||
inf "If no options are provided, the script will run in interactive mode."
|
||||
inf "All options are optional."
|
||||
inf ""
|
||||
inf "\e[1m\e[31mImportant: The script must be run as root to work properly.\e[0m"
|
||||
inf ""
|
||||
inf "Options:"
|
||||
inf " -a, --auto: Enable automatic, non-interactive mode"
|
||||
inf " -d, --debug: Enable debug mode"
|
||||
inf " -v, --version: Show script version"
|
||||
inf " -h, --help: Show help message"
|
||||
inf ""
|
||||
inf " -R, --repo: Set the backup repository path"
|
||||
inf " -E, --encryption: Set the encryption method"
|
||||
inf " -P, --passphrase: Set the backup passphrase"
|
||||
inf " -D, --dirs: Set the backup directories (separated by space as a string, for example: --dirs \"/etc /var/log /home\")"
|
||||
inf " -L, --label: Set the backup label prefix"
|
||||
inf " -S, --schedule: Set the cron schedule"
|
||||
inf ""
|
||||
inf " -H, --host: Set the backup server hostname or IP address"
|
||||
inf " -P, --port: Set the backup server SSH port"
|
||||
inf " -U, --user: Set the backup server SSH user"
|
||||
inf " -W, --password: Set the backup server SSH password"
|
||||
inf " -K, --key-name: Set the SSH key name"
|
||||
inf " -T, --key-type: Set the SSH key type"
|
||||
inf " -F, --key-file: Set the SSH key file path"
|
||||
inf ""
|
||||
inf "Example usage:"
|
||||
inf "./borgmatic_setup.sh --dirs \"/etc /var/log /home\" --host \"192.168.1.200\" --encryption \"none\""
|
||||
inf ""
|
||||
inf "or for an encrypted backup:"
|
||||
inf "./borgmatic_setup.sh --dirs \"/etc /var/log /home\" --host \"192.168.1.200\" --encryption \"repokey\" --passphrase \"example\""
|
||||
exit 0
|
||||
;;
|
||||
-R|--repo)
|
||||
BACKUP_REPO="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-E|--encryption)
|
||||
BACKUP_ENCRYPTION="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-P|--passphrase)
|
||||
BACKUP_PASSPHRASE="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-D|--dirs)
|
||||
BACKUP_DIRS="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-L|--label)
|
||||
BACKUP_LABEL_PREFIX="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-S|--schedule)
|
||||
BACKUP_CRON_SCHEDULE="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-H|--host)
|
||||
SSH_HOST="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-P|--port)
|
||||
SSH_PORT="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-U|--user)
|
||||
SSH_USER="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-W|--password)
|
||||
SSH_PASSWORD="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-K|--key-name)
|
||||
SSH_KEY_NAME="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-T|--key-type)
|
||||
SSH_KEY_TYPE="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-F|--key-file)
|
||||
SSH_KEY_FILE="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo -e "\e[97m╭─────────────────────────────────────────────────────────────────────────────╮"
|
||||
echo -e "│ │"
|
||||
echo -e "│ \e[1m$SCRIPT_NAME\e[0m │"
|
||||
@ -333,7 +516,8 @@ wrn "This script will install \e[1mborgbackup\e[0m, \e[1mpipx\e[0m"
|
||||
wrn "and \e[1msshpass\e[0m from the official repositories as well"
|
||||
wrn "as \e[1mborgmatic\e[0m from the official PyPI repository."
|
||||
|
||||
if ! wrnp "Do you want to continue? [y/N]"; then
|
||||
# only ask for confirmation in interactive mode
|
||||
if [ -z $AUTO ] && ! wrnp "Do you want to continue? [y/N]"; then
|
||||
inf "Aborted."
|
||||
exit 1
|
||||
fi
|
||||
@ -364,11 +548,13 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
if infp "Do you also want to upgrade all installed packages? [y/N]"; then
|
||||
if [ -z $NO_UPGRADE ]; then
|
||||
if [ -z $AUTO ] && infp "Do you also want to upgrade all installed packages? [y/N]"; then
|
||||
if ! inf_follow "Upgrading packages..." "\e[1;32mOK\e[0m" "\e[1;31mFAILED\e[0m" apt_upgrade; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! inf_follow "Checking if borgbackup is installed..." "\e[1;32mYes\e[0m" "\e[1;31mNo\e[0m" apt_is_installed borgbackup; then
|
||||
if ! inf_follow "Installing borgbackup..." "\e[1;32mOK\e[0m" "\e[1;31mFAILED\e[0m" apt_install borgbackup; then
|
||||
@ -535,19 +721,21 @@ if ! inf_follow "Checking for cronjob..." "\e[1;32mYes\e[0m" "\e[1;31mNo\e[0m" c
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! infp "Do you want to run the first backup now? [y/N]"; then
|
||||
inf "Setup completed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z $AUTO ]; then
|
||||
if [ -z $FIRST_BACKUP ] && infp "Do you want to run the first backup now? [y/N]"; then
|
||||
if ! inf_follow "Running first backup..." "\e[1;32mOK\e[0m" "\e[1;31mFAILED\e[0m" run_command /root/.local/pipx/venvs/borgmatic/bin/borgmatic create --verbosity 1 --list --stats; then
|
||||
err "Failed to run first backup."
|
||||
err "If the error persists, please contact the support at $SCRIPT_SUPPORT."
|
||||
exit 1
|
||||
|
||||
else
|
||||
inf "Your first backup has been created successfully!"
|
||||
fi
|
||||
else
|
||||
inf "Skipping first backup."
|
||||
inf "Setup completed."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
inf "Setup completed."
|
||||
|
||||
|
Reference in New Issue
Block a user