diff --git a/.vscode/numbered-bookmarks.json b/.vscode/numbered-bookmarks.json new file mode 100644 index 0000000..28d6e94 --- /dev/null +++ b/.vscode/numbered-bookmarks.json @@ -0,0 +1,19 @@ +{ + "bookmarks": [ + { + "fsPath": "$ROOTPATH$/borghelper.sh", + "bookmarks": [ + -1, + 8, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ] + } + ] +} \ No newline at end of file diff --git a/borghelper.sh b/borghelper.sh new file mode 100644 index 0000000..fd47a0e --- /dev/null +++ b/borghelper.sh @@ -0,0 +1,99 @@ +#!/bin/sh + +# +## borg helper script for viewing and restoring backups +# + + +### functions +consoleError() { + printf "%s\n%s\n" "$err" "$2" + printf "Exiting.\n\n%s" "$norm" + exit "$1" +} + +textblock() { + printf "%s\n" "$1" | fold -w "$width" -s +} + + +### text formatting presets +err=$(tput bold)$(tput setaf 1) +norm$(tput sgr0) +width=$(tput cols) + + +### pre-requisites + +# is user root? +if [ ! "$( id -u )" -eq 0 ]; then + consoleError 1 'You must be root to run this script.' +fi + +# has a parameter been passed to this script? +if [ -z "$1" ]; then + consoleError 1 "No operation requested. Please run this script with '--help' for valid parameters." +fi + +# process startup parameters +while [ $# -gt 0 ]; do + case "$1" in + -a|--archive) + # name of backup archive + if [ -z "$2" ]; then + consoleError 1 "Please provide the name of the backup archive you want to work with or use '--list-all' to get a full list." + fi + archiveName="$2" + shift + ;; + -f|--file) + # specific file to restore + if [ -z "$2" ]; then + consoleError 1 'Please provide the name of the specific file you want to restore.' + fi + fileName="$2" + shift + ;; + -h|-\?|--help) + # display help + printf "\nStill working on the help text :-)\n\n" + exit 0 + ;; + -l|--list) + # list contents of specific backup + operation='viewarchive' + ;; + + -la|--list-all) + # list all backup archives + operation='listall' + ;; + -p|--path) + # path to restore files + if [ -z "$2" ]; then + consoleError 1 'Please specify a path where you want files restored.' + fi + restorePath="${2%/}" + shift + ;; + -v|--vars) + # location of borgvars file + if [ -z "$2" ]; then + consoleError 1 'Please provide the path to the file with your borg connection information.' + elif [ ! -f "$2" ]; then + consoleError 1 'The specified borg connection information file does not exist.' + exit 1 + fi + varsFile="$2" + shift + ;; + *) + # invalid option + printf "%s\nUnknown option: %s\n" "$err" "$1" + printf "Use '--help' for valid options.\n\n%s" "$norm" + exit 1 + ;; + esac + shift +done +