diff --git a/postgres_backup.sh b/postgres_backup.sh index d8ba7ca..baa7356 100755 --- a/postgres_backup.sh +++ b/postgres_backup.sh @@ -1,9 +1,8 @@ #!/usr/bin/env sh # Usage: -# postgres_backup.sh [man] //Manual backup -# postgres_backup.sh auto //Auto backup (separate backup location) -# postgres_backup.sh [auto|man] debug //Outputs status messages to STDOUT +# postgres_backup.sh [man] //Manual backup, full output +# postgres_backup.sh auto //Auto backup (separate backup location, only outputs STDERR messages) # CONFIG ### Example Config File ############ @@ -15,25 +14,30 @@ ### THREADS=2 ### #################################### - +# +# Load config file: source ${HOME}/.postgres_backup.conf -# END CONFIG - - -## Check if debug mode is called, and define debug message function -[ "$2" = "debug" ] && DEBUG="true" || DEBUG="false" -msg_debug() { - [ "$DEBUG" = "true" ] && echo -e "$1" -} ## Check if automated, set appropriate directory -[ "$1" = "auto" ] && DIR=${DIR}/auto || DIR=${DIR}/manual -msg_debug "Backup directory set to $(tput bold)${DIR}$(tput sgr0)" +if [ "$1" = "auto" ]; then + AUTO="true" + DIR=${DIR}/auto +else + AUTO="false" + DIR=${DIR}/manual +fi + +## Define message command +msg_show() { + [ "$AUTO" = "false" ] && printf "$1" +} + +msg_show "Backup directory set to $(tput bold)${DIR}$(tput sgr0)\n" ## Set date for timestamp DATE=$(date +%Y%m%d-%H%M) -msg_debug "Date set to $(tput bold)${DATE}$(tput sgr0)" +msg_show "Timestamp set to $(tput bold)${DATE}$(tput sgr0)\n" ## Get list of DBs list_db=$(psql -p${PORT} -U postgres -t -c 'select datname from pg_database;' | grep -v 'template0\|template1\|postgres' | sed '/^$/d') @@ -42,30 +46,29 @@ case $COMPRESSION in xz) compress="xz -T${THREADS} -${COMP_LEVEL} -" comp_ext="xz" - msg_debug "Compression set to $(tput bold)${COMPRESSION}$(tput sgr0)" + msg_show "Compression set to $(tput bold)${COMPRESSION}$(tput sgr0)\n" ;; zstd) compress="zstd -T${THREADS} -${COMP_LEVEL} -z -" comp_ext="zst" - msg_debug "Compression set to $(tput bold)${COMPRESSION}$(tput sgr0)" + msg_show "Compression set to $(tput bold)${COMPRESSION}$(tput sgr0)\n" ;; *) - echo "ERROR 11: Compression not configured correctly!" >2 + echo "ERROR 11: Compression not configured correctly!" >&2 exit 11 ;; esac -msg_debug "\nStarting backup procedures...\n" +msg_show "\nStarting backup procedures...\n\n" ## Backup globals pg_dumpall -p${PORT} -g | eval $compress > ${DIR}/globals_${DATE}.dmp.${comp_ext} -msg_debug "Backed up $(tput setaf 2)$(tput bold)globals$(tput sgr0) as '$(tput setaf 3)${DIR}/globals_${DATE}.dmp.${comp_ext}$(tput sgr0)' using '$(tput bold)${compress}$(tput sgr0)'" +msg_show "Backed up $(tput setaf 2)$(tput bold)globals$(tput sgr0) as $(tput setaf 3)${DIR}/globals_${DATE}.dmp.${comp_ext}$(tput sgr0) using $(tput bold)${compress}$(tput sgr0)\n" -msg_debug "Starting DB dump loop..." for db in $list_db; do target="${DIR}/${db}_${DATE}.dmp.${comp_ext}" pg_dump -O $db | eval $compress > $target - msg_debug "Backed up '$(tput setaf 2)$(tput bold)${db}$(tput sgr0)' as '$(tput setaf 3)${target}$(tput sgr0)' using '$(tput bold)${compress}$(tput sgr0)'" + msg_show "Backed up $(tput setaf 2)$(tput bold)${db}$(tput sgr0) as $(tput setaf 3)${target}$(tput sgr0) using $(tput bold)${compress}$(tput sgr0)\n" done exit 0