#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: backup [-q] [-C COMMENT] [-x] [ARCHIVE_TAG] backup -h EOF } help() { cat <<-'EOF' Options: -q disable verbose mode, useful for non-interactive sessions -C COMMENT the comment text to be attached to the archive -h, --help show this message ARCHIVE_TAG the tag used to create the new backup (default: "manual") The repository is expected to have been created with: $ borg init -e repokey-blake2 The following environment variables are expected to be exported: $BORG_PASSCOMMAND $BORG_REPO $BORG_REMOTE_PATH Password-less SSH access is required, usually done via adding ~/.ssh/id_rsa.pub to suyin:.ssh/authorized_keys. Examples: Run backup manually: $ backup Create backup with comment, and verbose mode active: $ backup -qC 'The backup has a comment' my-backup EOF } for flag in "$@"; do case "$flag" in (--) break ;; (--help) usage help exit ;; (*) ;; esac done VERBOSE_FLAGS='--verbose --progress' COMMENT='' while getopts 'qC:h' flag; do case "$flag" in (q) VERBOSE_FLAGS='' ;; C) COMMENT="$OPTARG" ;; (h) usage help exit ;; (*) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) ARCHIVE_TAG="${1:-manual}" set -x # The contents of $VERBOSE_FLAGS doesn't involve user input: # shellcheck disable=2086 borgy \ $VERBOSE_FLAGS \ --comment "$COMMENT" \ "::{hostname}-{now}-$ARCHIVE_TAG" \ ~/