diff --git a/src/borgwrapper b/src/borgwrapper index 8e921b7..c8b9c7b 100755 --- a/src/borgwrapper +++ b/src/borgwrapper @@ -6,16 +6,18 @@ LOGFILE="/var/log/borgwrapper/borgwrapper.log" # Create log directory if not exist if [ ! -d $(dirname ${LOGFILE}) ]; then - mkdir $(dirname ${LOGFILE} + mkdir $(dirname ${LOGFILE}) fi log () { - echo "$@" >> ${LOGFILE} + message=${*:-$(> ${LOGFILE} } err () { - echo "$@" >> ${LOGFILE} + message=${*:-$(> ${LOGFILE} } print_usage () { @@ -93,7 +95,7 @@ borg_init () { ) fi log "Initializing ${BORG_REPO}" - ${BORG} init "${BORG_INIT_ARGS[@]}" "${BORG_REPO}" > ${LOGFILE} + ${BORG} init "${BORG_INIT_ARGS[@]}" "${BORG_REPO}" 2>&1 | log } borg_backup () { @@ -125,7 +127,7 @@ borg_backup () { "${BORG_REPO}"::"${SYSTEM_NAME}-$(date -u +'%Y-%m-%dT%H-%M-%SZ')" \ "${PATHS[@]}" \ "${EXCLUDE_CMD[@]}" \ - >> ${LOGFILE} \ + 2>&1 | log \ || log "Error backing up. Has repo been initialized?" } @@ -152,7 +154,7 @@ borg_prune () { --keep-monthly=${KEEP_MONTHLY:-0} \ --keep-yearly=${KEEP_YEARLY:-0} \ "${BORG_REPO}" \ - >> "${LOGFILE} + 2>&1 | log } borg_verify () { @@ -163,23 +165,23 @@ borg_verify () { fi log "Running borg check" - ${BORG} check "${BORG_CHECK_ARGS[@]}" "${BORG_REPO}" >> ${LOGFILE} + ${BORG} check "${BORG_CHECK_ARGS[@]}" "${BORG_REPO}" 2>&1 | log } borg_exec () { export BORG_REPO - ${BORG} "$@" >> ${LOGFILE} + ${BORG} "$@" | log } convert_rate () { # Convert IN_RATE to bytes local IN_RATE=${1} local RATE=0 - local B_REGEX="^([0-9]+)$" - local KIB_REGEX="^([0-9]+)K$" - local MIB_REGEX="^([0-9]+)M$" - local GIB_REGEX="^([0-9]+)G$" - local TIB_REGEX="^([0-9]+)T$" + local B_REGEX='^([0-9]+)$' + local KIB_REGEX='^([0-9]+)K$' + local MIB_REGEX='^([0-9]+)M$' + local GIB_REGEX='^([0-9]+)G$' + local TIB_REGEX='^([0-9]+)T$' if [[ ${IN_RATE} =~ ${TIB_REGEX} ]]; then RATE=$(( ${BASH_REMATCH[1]} * 1024**4 )) @@ -192,16 +194,16 @@ convert_rate () { elif [[ ${IN_RATE} =~ ${B_REGEX} ]]; then RATE=${BASH_REMATCH[1]} else - >&2 echo "${IN_RATE} is not a valid rate" - false >> ${LOGFILE} + >&2 echo "${IN_RATE} is not a valid rate" | log + false fi - echo ${RATE} >> ${LOGFILE} + echo ${RATE} | log } limit_bw () { if ! [[ -x $(command -v pv) ]]; then - >&2 echo "WARNING: BWLIMIT is enabled, but the utility 'pv' is not available. Continuing without bandwidth limitation." + >&2 echo "WARNING: BWLIMIT is enabled, but the utility 'pv' is not available. Continuing without bandwidth limitation." | log return 0 fi @@ -210,7 +212,7 @@ limit_bw () { chmod +x ${PV_WRAPPER} echo -e '#!/bin/bash\npv -q -L ${RATE_LIMIT} | "$@"' > ${PV_WRAPPER} export BORG_RSH="${PV_WRAPPER} ${BORG_RSH}" - echo "Limiting bandwith to ${RATE_LIMIT} bytes/s" >> ${LOGFILE} + echo "Limiting bandwith to ${RATE_LIMIT} bytes/s" | log } exit_backup () { @@ -265,7 +267,7 @@ MODE="${1}" echo "Loading config from ${CONFIG}" -source "${CONFIG}" || exit 1 +source "${CONFIG}" || log "Config file: ${CONFIG} does not exit"; exit 1 # Set some defaults [[ -n ${BORG_RSH} ]] || BORG_RSH="ssh" @@ -298,17 +300,22 @@ mkdir -p "${LOCKDIR}" borg_init elif [[ ${MODE} == "backup" ]]; then trap 'exit_backup $?' ERR INT TERM + + log "Saving package list..." save_package_list - echo "Saving package list..." >> ${LOGFILE} + + log "Dumping mongo..." dump_mongo - echo "Dumping mongo..." >> ${LOGFILE} + + log "Dumping sql..." dump_sql - echo "Dumping sql..." >> ${LOGFILE} + log "Running borg backup..." borg_backup - echo "Running borg backup..." >> ${LOGFILE} + + log "Running borg prune..." borg_prune - echo "Running borg prune..." >> ${LOGFILE} + exit_backup 0 elif [[ ${MODE} == "verify" ]]; then trap 'exit_verify $?' ERR INT TERM @@ -316,7 +323,7 @@ mkdir -p "${LOCKDIR}" exit_verify 0 elif [[ ${MODE} == "exec" ]]; then if [[ $# -le 1 ]]; then - >&2 echo "ERROR: No borg arguments given" >> ${LOGFILE} + >&2 echo "ERROR: No borg arguments given" | err exit 1 fi