|
@@ -24,7 +24,7 @@
|
|
|
|
|
|
# {{{ Variables
|
|
|
|
|
|
-# Email Address to send errors to
|
|
|
+# Email Address to send errors to. If empty errors are displayed on stdout.
|
|
|
MAILADDR="root"
|
|
|
|
|
|
# By default, on Debian systems (and maybe others), only postgres user is
|
|
@@ -49,10 +49,13 @@ USERNAME="postgres"
|
|
|
# replace hostname with the value of ${DBHOST}, dbuser with the value of
|
|
|
# ${USERNAME} and dbpass with the password.
|
|
|
|
|
|
-# Host name (or IP address) of PostgreSQL server
|
|
|
+# Host name (or IP address) of PostgreSQL server.
|
|
|
+# Use 'localhost' for socket connection or '127.0.0.1' to force TCP connection
|
|
|
DBHOST="localhost"
|
|
|
|
|
|
-# Port of PostgreSQL server (only used if ${DBHOST} != localhost).
|
|
|
+# Port of PostgreSQL server.
|
|
|
+# It is also used if ${DBHOST} is localhost (socket connection) as socket name
|
|
|
+# contains port
|
|
|
DBPORT="5432"
|
|
|
|
|
|
# List of database(s) names(s) to backup If you would like to backup all
|
|
@@ -169,7 +172,9 @@ if [ -w "/dev/shm" ]; then
|
|
|
LOG_DIR="/dev/shm"
|
|
|
fi
|
|
|
|
|
|
-LOG_FILE="${LOG_DIR}/${NAME}_${DBHOST//\//_}-$(date '+%Y-%m-%d_%Hh%Mm').log"
|
|
|
+LOG_PREFIX="${LOG_DIR}/${NAME}_${DBHOST//\//_}-$(date '+%Y-%m-%d_%Hh%Mm')"
|
|
|
+LOG_FILE="${LOG_PREFIX}.log"
|
|
|
+LOG_REPORT="${LOG_PREFIX}.report"
|
|
|
|
|
|
# Debug mode
|
|
|
DEBUG="no"
|
|
@@ -200,9 +205,9 @@ if [[ "${HOSTNAME}" != *.* ]]; then
|
|
|
HOSTNAME="$(hostname --fqdn)"
|
|
|
fi
|
|
|
|
|
|
-HOST="${HOSTNAME}"
|
|
|
-if [ "${DBHOST}" != "localhost" ]; then
|
|
|
- HOST="${HOSTNAME}:${DBPORT}"
|
|
|
+HOST="${DBHOST}:${DBPORT}"
|
|
|
+if [ "${DBHOST}" = "localhost" ]; then
|
|
|
+ HOST="${HOSTNAME}:${DBPORT} (socket)"
|
|
|
fi
|
|
|
|
|
|
CONN_ARGS=()
|
|
@@ -299,8 +304,9 @@ compression () {
|
|
|
|
|
|
# {{{ pgdb_init()
|
|
|
pgdb_init () {
|
|
|
+ CONN_ARGS=(--port "${DBPORT}")
|
|
|
if [ "${DBHOST}" != "localhost" ]; then
|
|
|
- CONN_ARGS=(--host "${DBHOST}" --port "${DBPORT}")
|
|
|
+ CONN_ARGS+=(--host "${DBHOST}")
|
|
|
fi
|
|
|
if [ -n "${USERNAME}" ]; then
|
|
|
CONN_ARGS+=(--username "${USERNAME}")
|
|
@@ -639,7 +645,13 @@ exec 2>&7 7>&- # Restore stdout and close file descriptor #7.
|
|
|
# }}}
|
|
|
|
|
|
# {{{ Reporting
|
|
|
-if [ "${DEBUG}" = "no" ] && grep -q '^err|' "${LOG_FILE}" ; then
|
|
|
+if grep -q '^err|' "${LOG_FILE}"; then
|
|
|
+ rc=1
|
|
|
+else
|
|
|
+ rc=0
|
|
|
+fi
|
|
|
+
|
|
|
+if [ "${DEBUG}" = "no" ] && [ ${rc} = 1 ]; then
|
|
|
(
|
|
|
printf "*Errors/Warnings* (below) reported during backup on *%s*:\n\n" "${HOST}"
|
|
|
grep '^err|' "${LOG_FILE}" | cut -d '|' -f 3- | \
|
|
@@ -656,24 +668,24 @@ if [ "${DEBUG}" = "no" ] && grep -q '^err|' "${LOG_FILE}" ; then
|
|
|
fi
|
|
|
done
|
|
|
printf "\nFor more information, try to run %s in debug mode, see \`%s -h\`\n" "${NAME}" "$(basename "$0")"
|
|
|
- ) | mail -s "${NAME} issues on ${HOSTNAME}" "${MAILADDR}"
|
|
|
+ ) > "${LOG_REPORT}"
|
|
|
+
|
|
|
+ if [ -n "${MAILADDR}" ]; then
|
|
|
+ mail -s "${NAME} issues on ${HOSTNAME}" "${MAILADDR}" < "${LOG_REPORT}"
|
|
|
+ else
|
|
|
+ cat "${LOG_REPORT}"
|
|
|
+ fi
|
|
|
fi
|
|
|
# }}}
|
|
|
|
|
|
# {{{ Cleanup and exit()
|
|
|
-if [ -s "${LOGERR}" ]; then
|
|
|
- rc=1
|
|
|
-else
|
|
|
- rc=0
|
|
|
-fi
|
|
|
-
|
|
|
# Cleanup GnuPG home dir
|
|
|
if [ -d "${GPG_HOMEDIR}" ]; then
|
|
|
rm -rf "${GPG_HOMEDIR}"
|
|
|
fi
|
|
|
|
|
|
# Clean up log files
|
|
|
-rm -f "${LOG_FILE}"
|
|
|
+rm -f "${LOG_FILE}" "${LOG_REPORT}"
|
|
|
|
|
|
exit ${rc}
|
|
|
# }}}
|