#!/usr/bin/bash ### # # Options Section # ### set -e set -o pipefail ### # # Variable Section # ### export BORG_BASE_DIR='/nonexistent' export BORG_CACHE_DIR='/var/cache/borgbackup' export BORG_COMPRESSION export BORG_CONFIG_EXCLUDE='/etc/borgbackup/exclude' export BORG_CONFIG_FILE='/etc/borgbackup/config' export BORG_CONFIG_DIR='/etc/borgbackup' export BORG_FILES_CACHE_TTL export BORG_KEYS_DIR='/etc/borgbackup/keys' export BORG_LOG_CREATE='/var/log/borgbackup/create.log' export BORG_LOG_PRUNE='/var/log/borgbackup/prune.log' export BORG_PASSCOMMAND='/usr/bin/cat /etc/borgbackup/password' export BORG_POSTEXEC_DIR='/etc/borgbackup/postexec' export BORG_PREEXEC_DIR='/etc/borgbackup/preexec' export BORG_PRUNE_WITHIN export BORG_PRUNE_DAILY export BORG_PRUNE_MONTHLY export BORG_PRUNE_WEEKLY export BORG_REPO export BORG_SECURITY_DIR='/var/lib/borgbackup' export BORG_SHOW_SYSINFO export BORG_WORKAROUNDS export TMPDIR='/tmp' source '/etc/borgbackup/config' ### # # Runtime Environment # ### if [[ -n "${INVOCATION_ID}" ]]; then if ! source '/usr/lib/borgbackup/check_conditions'; then exit 1 fi fi /usr/bin/run-parts --new-session "${BORG_PREEXEC_DIR}" BORG_REPO_ID=$(/usr/bin/borg list | /usr/bin/tail --lines='1' | /usr/bin/mawk '{print $1}') BORG_REPO_ID=$(( "${BORG_REPO_ID}" + 1 )) /usr/bin/test ! -f "${BORG_LOG_CREATE}" && \ /usr/bin/touch "${BORG_LOG_CREATE}" /usr/bin/test ! -f "${BORG_LOG_PRUNE}" && \ /usr/bin/touch "${BORG_LOG_PRUNE}" DATE=$(/usr/bin/date) if [ ! -s "${BORG_LOG_CREATE}" ]; then /usr/bin/echo -n -e "Date: ${DATE}\nRepository ID: ${BORG_REPO_ID}\n\n" >> "${BORG_LOG_CREATE}" else /usr/bin/echo -n -e "\nDate: ${DATE}\nRepository ID: ${BORG_REPO_ID}\n\n" >> "${BORG_LOG_CREATE}" fi /usr/bin/borg create --debug \ --compression "${BORG_COMPRESSION}" \ --exclude-from "${BORG_CONFIG_EXCLUDE}" \ ::"${BORG_REPO_ID}" \ '/' \ &>> "${BORG_LOG_CREATE}" DATE=$(/usr/bin/date) if [ ! -s "${BORG_LOG_PRUNE}" ]; then /usr/bin/echo -n -e "Date: ${DATE}\nRepository ID: ${BORG_REPO_ID}\n\n" >> "${BORG_LOG_PRUNE}" else /usr/bin/echo -n -e "\nDate: ${DATE}\nRepository ID: ${BORG_REPO_ID}\n\n" >> "${BORG_LOG_PRUNE}" fi /usr/bin/borg prune --debug \ --keep-within="${BORG_PRUNE_WITHIN}" \ --keep-daily="${BORG_PRUNE_DAILY}" \ --keep-weekly="${BORG_PRUNE_WEEKLY}" \ --keep-monthly="${BORG_PRUNE_MONTHLY}" \ --save-space \ &>> "${BORG_LOG_PRUNE}" /usr/bin/run-parts --new-session "${BORG_POSTEXEC_DIR}"