| 
														
															@@ -22,8 +22,21 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
														 | 
														
														 | 
														
															 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# {{{ Constants 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/postgres/bin:/usr/local/pgsql/bin 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+HOMEPAGE="https://github.com/k0lter/autopostgresqlbackup" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+NAME="AutoPostgreSQLBackup"         # Script name 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+VERSION="2.0"                       # Version Number 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+DATE="$(date '+%Y-%m-%d_%Hh%Mm')"   # Datestamp e.g 2002-09-21 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+DNOW="$(date '+%u')"                # Day number of the week 1 to 7 where 1 represents Monday 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+DNOM="$(date '+%d')"                # Date of the Month e.g. 27 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ Variables 
														 | 
														
														 | 
														
															 # {{{ Variables 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# Configuration file or directory 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+CONFIG="/etc/default/autopostgresqlbackup" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # Email Address to send errors to. If empty errors are displayed on stdout. 
														 | 
														
														 | 
														
															 # Email Address to send errors to. If empty errors are displayed on stdout. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 MAILADDR="root" 
														 | 
														
														 | 
														
															 MAILADDR="root" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -145,36 +158,6 @@ PREBACKUP= 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # Command or script to execute after backups 
														 | 
														
														 | 
														
															 # Command or script to execute after backups 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 POSTBACKUP= 
														 | 
														
														 | 
														
															 POSTBACKUP= 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# }}} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# {{{ OS Specific 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ -f /etc/default/autopostgresqlbackup ]; then 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    # shellcheck source=/dev/null 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    . /etc/default/autopostgresqlbackup 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# }}} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# {{{ Defaults 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/postgres/bin:/usr/local/pgsql/bin 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-HOMEPAGE="https://github.com/k0lter/autopostgresqlbackup" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-NAME="AutoPostgreSQLBackup"         # Script name 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-VERSION="2.0"                       # Version Number 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-DATE="$(date '+%Y-%m-%d_%Hh%Mm')"   # Datestamp e.g 2002-09-21 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-DNOW="$(date '+%u')"                # Day number of the week 1 to 7 where 1 represents Monday 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-DNOM="$(date '+%d')"                # Date of the Month e.g. 27 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-LOG_DIR="${BACKUPDIR}"              # Directory where the main log is saved 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# Fix day of month (left padding with 0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-DOMONTHLY="$(printf '%.2i' "${DOMONTHLY}")" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# Using a shared memory filesystem (if available) to avoid 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# issues when there is no left space on backup storage 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ -w "/dev/shm" ]; then 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    LOG_DIR="/dev/shm" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-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 mode 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 DEBUG="no" 
														 | 
														
														 | 
														
															 DEBUG="no" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -182,22 +165,8 @@ DEBUG="no" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # Encryption prerequisites 
														 | 
														
														 | 
														
															 # Encryption prerequisites 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 GPG_HOMEDIR= 
														 | 
														
														 | 
														
															 GPG_HOMEDIR= 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# Create required directories 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ ! -e "${BACKUPDIR}" ]; then         # Check Backup Directory exists. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    mkdir -p "${BACKUPDIR}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ ! -e "${BACKUPDIR}/daily" ]; then   # Check Daily Directory exists. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    mkdir -p "${BACKUPDIR}/daily" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ ! -e "${BACKUPDIR}/weekly" ]; then  # Check Weekly Directory exists. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    mkdir -p "${BACKUPDIR}/weekly" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ ! -e "${BACKUPDIR}/monthly" ]; then # Check Monthly Directory exists. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    mkdir -p "${BACKUPDIR}/monthly" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# Database connection arguments 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+CONN_ARGS=() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # Hostname 
														 | 
														
														 | 
														
															 # Hostname 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 HOSTNAME="$(uname -n)" 
														 | 
														
														 | 
														
															 HOSTNAME="$(uname -n)" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -205,12 +174,8 @@ if [[ "${HOSTNAME}" != *.* ]]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     HOSTNAME="$(hostname --fqdn)" 
														 | 
														
														 | 
														
															     HOSTNAME="$(hostname --fqdn)" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 fi 
														 | 
														
														 | 
														
															 fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-HOST="${DBHOST}:${DBPORT}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ "${DBHOST}" = "localhost" ]; then 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    HOST="${HOSTNAME}:${DBPORT} (socket)" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-CONN_ARGS=() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# Return Code 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+RC=0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ log{,ger,_info,_debug,_warn,_error}() 
														 | 
														
														 | 
														
															 # {{{ log{,ger,_info,_debug,_warn,_error}() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -472,6 +437,43 @@ dump() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# {{{ setup() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+setup() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # Using a shared memory filesystem (if available) to avoid 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # issues when there is no left space on backup storage 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ -w "/dev/shm" ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        LOG_DIR="/dev/shm" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    LOG_PREFIX="${LOG_DIR}/${NAME}_${DBHOST//\//_}-$(date '+%Y-%m-%d_%Hh%Mm')" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    LOG_FILE="${LOG_PREFIX}.log" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    LOG_REPORT="${LOG_PREFIX}.report" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # Create required directories 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ ! -e "${BACKUPDIR}" ]; then         # Check Backup Directory exists. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        mkdir -p "${BACKUPDIR}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ ! -e "${BACKUPDIR}/daily" ]; then   # Check Daily Directory exists. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        mkdir -p "${BACKUPDIR}/daily" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ ! -e "${BACKUPDIR}/weekly" ]; then  # Check Weekly Directory exists. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        mkdir -p "${BACKUPDIR}/weekly" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ ! -e "${BACKUPDIR}/monthly" ]; then # Check Monthly Directory exists. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        mkdir -p "${BACKUPDIR}/monthly" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    HOST="${DBHOST}:${DBPORT}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ "${DBHOST}" = "localhost" ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        HOST="${HOSTNAME}:${DBPORT} (socket)" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ cleanup() 
														 | 
														
														 | 
														
															 # {{{ cleanup() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 cleanup() { 
														 | 
														
														 | 
														
															 cleanup() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     local dumpdir db when count line 
														 | 
														
														 | 
														
															     local dumpdir db when count line 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -499,6 +501,36 @@ cleanup() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# {{{ setup_io() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+setup_io() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exec 6>&1           # Link file descriptor #6 with stdout. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        # Saves stdout. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exec 7>&2           # Link file descriptor #7 with stderr. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        # Saves stderr. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exec >  >( logger "out") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exec 2> >( logger "err") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#  {{{ cleanup_io() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+cleanup_io() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exec 1>&6 6>&-      # Restore stdout and close file descriptor #6. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exec 2>&7 7>&-      # Restore stdout and close file descriptor #7. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}}  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#  {{{ cleanup() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+cleanup() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # Cleanup GnuPG home dir 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ -d "${GPG_HOMEDIR}" ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        rm -rf "${GPG_HOMEDIR}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # Clean up log files 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    rm -f "${LOG_FILE}" "${LOG_REPORT}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ usage() 
														 | 
														
														 | 
														
															 # {{{ usage() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 usage() { 
														 | 
														
														 | 
														
															 usage() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 cat <<EOH 
														 | 
														
														 | 
														
															 cat <<EOH 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -511,13 +543,13 @@ A fully automated tool to make periodic backups of PostgreSQL databases. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 Options: 
														 | 
														
														 | 
														
															 Options: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     -h  Shows this help 
														 | 
														
														 | 
														
															     -h  Shows this help 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     -d  Run in debug mode (no mail sent) 
														 | 
														
														 | 
														
															     -d  Run in debug mode (no mail sent) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    -c  Configuration file or directory (default: ${CONFIG}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 EOH 
														 | 
														
														 | 
														
															 EOH 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ Process command line arguments 
														 | 
														
														 | 
														
															 # {{{ Process command line arguments 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-while getopts "hd" OPTION ; do 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+while getopts "hdc:" OPTION ; do 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     case "${OPTION}" in 
														 | 
														
														 | 
														
															     case "${OPTION}" in 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         h) 
														 | 
														
														 | 
														
															         h) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             usage 
														 | 
														
														 | 
														
															             usage 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -526,20 +558,50 @@ while getopts "hd" OPTION ; do 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         d) 
														 | 
														
														 | 
														
															         d) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             DEBUG="yes" 
														 | 
														
														 | 
														
															             DEBUG="yes" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ;; 
														 | 
														
														 | 
														
															             ;; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        c) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            CONFIG="${OPTARG}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            ;; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         *) 
														 | 
														
														 | 
														
															         *) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            printf "Try \`%s -h\` to check the command line arguments\n" "$(basename "$0")" >&2 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            printf "Try \`%s -h\` to check the command line arguments\n" "${NAME}" >&2 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit 1 
														 | 
														
														 | 
														
															             exit 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     esac 
														 | 
														
														 | 
														
															     esac 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 done 
														 | 
														
														 | 
														
															 done 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ I/O redirection(s) for logging 
														 | 
														
														 | 
														
															 # {{{ I/O redirection(s) for logging 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exec 6>&1           # Link file descriptor #6 with stdout. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    # Saves stdout. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exec 7>&2           # Link file descriptor #7 with stderr. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    # Saves stderr. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exec >  >( logger "out") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exec 2> >( logger "err") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+setup_io 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# {{{ Setup runtime settings 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+setup 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+# {{{ Config file loading 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+if [ -d "${CONFIG}" ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    CMD="$(readlink -f "${0}")" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    CMD_ARGS=() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if [ "${DEBUG}" = "yes" ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        CMD_ARGS+=(-d) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cleanup_io 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cleanup 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    find "${CONFIG}" -type f -iname '*.conf' -print0 | \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        xargs -0 -L1 "${CMD}" "${CMD_ARGS[@]}" -c 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exit $? 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+elif [ -f "${CONFIG}" ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    log_debug "Loading config '${CONFIG}'" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # shellcheck source=/dev/null 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    . "${CONFIG}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    setup 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    log_error "${NAME}: config file or directory '${CONFIG}' not found" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cleanup_io 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cleanup 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    exit 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ PreBackup 
														 | 
														
														 | 
														
															 # {{{ PreBackup 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -640,18 +702,15 @@ fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ cleanup I/O redirections 
														 | 
														
														 | 
														
															 # {{{ cleanup I/O redirections 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exec 1>&6 6>&-      # Restore stdout and close file descriptor #6. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exec 2>&7 7>&-      # Restore stdout and close file descriptor #7. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+cleanup_io 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ Reporting 
														 | 
														
														 | 
														
															 # {{{ Reporting 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 if grep -q '^err|' "${LOG_FILE}"; then 
														 | 
														
														 | 
														
															 if grep -q '^err|' "${LOG_FILE}"; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    rc=1 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-else 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    rc=0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    RC=1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 fi 
														 | 
														
														 | 
														
															 fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ "${DEBUG}" = "no" ] && [ ${rc} = 1 ]; then 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+if [ "${DEBUG}" = "no" ] && [ ${RC} = 1 ]; then 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ( 
														 | 
														
														 | 
														
															     ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         printf "*Errors/Warnings* (below) reported during backup on *%s*:\n\n" "${HOST}" 
														 | 
														
														 | 
														
															         printf "*Errors/Warnings* (below) reported during backup on *%s*:\n\n" "${HOST}" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         grep '^err|' "${LOG_FILE}" | cut -d '|' -f 3- | \ 
														 | 
														
														 | 
														
															         grep '^err|' "${LOG_FILE}" | cut -d '|' -f 3- | \ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -679,15 +738,9 @@ fi 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # {{{ Cleanup and exit() 
														 | 
														
														 | 
														
															 # {{{ Cleanup and exit() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# Cleanup GnuPG home dir 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-if [ -d "${GPG_HOMEDIR}" ]; then 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    rm -rf "${GPG_HOMEDIR}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-fi 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-# Clean up log files 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-rm -f "${LOG_FILE}" "${LOG_REPORT}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+cleanup 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-exit ${rc} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+exit ${RC} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # }}} 
														 | 
														
														 | 
														
															 # }}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # vim: foldmethod=marker foldlevel=0 foldenable 
														 | 
														
														 | 
														
															 # vim: foldmethod=marker foldlevel=0 foldenable 
														 |