improve logging

dev
Bryan 2020-11-04 00:10:07 -06:00
parent a3dbe6cebb
commit bf527e0090
1 changed files with 32 additions and 25 deletions

View File

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