sync.sh: new option to gzip mail attachment

This commit is contained in:
2022-04-22 10:39:17 +02:00
parent 38dd2d87ed
commit 1f6a506af4

View File

@@ -48,12 +48,14 @@
# -v # -v
# adds sub-tasks information, with timestamps. # adds sub-tasks information, with timestamps.
# -D # -D
# by default, this script will re-route all outputs (stdout and stderr) # by default, this script re-routes all outputs (stdout and stderr)
# to a temporary file after basic initialization (mainly options # to a temporary file after basic initialization (mainly options
# checks and configuration file evaluation), so that we can format # checks and configuration file evaluation), so that we can format
# the output before displaying or mailing it. # the output before displaying or mailing it.
# This option disables this redirection. It is useful (together with # This option disables this redirection. It is useful (together with
# bash's -x option) when some errors are difficult to track. # bash's -x option) when some errors are difficult to track.
# -Z
# activate email attachment compression (with gzip).
# #
# GENERAL # GENERAL
# Ensure your ssh setup is correct: You must be able to ssh the target # Ensure your ssh setup is correct: You must be able to ssh the target
@@ -124,6 +126,7 @@ NUMID="" # (-u) use numeric IDs
#VERBOSE=0 # TODO: (-v) logs level (0/1) #VERBOSE=0 # TODO: (-v) logs level (0/1)
DEBUG=n # (-D) debug: no I/O redirect (y/n) DEBUG=n # (-D) debug: no I/O redirect (y/n)
MAILTO=${MAILTO:-""} # (-n) mail recipient. -n sets it to "" MAILTO=${MAILTO:-""} # (-n) mail recipient. -n sets it to ""
ZIPMAIL="cat" # (-Z) zip mail attachment
# options not available on command line, but settable in config file. # options not available on command line, but settable in config file.
NYEARS=3 # keep # years (int) NYEARS=3 # keep # years (int)
@@ -155,13 +158,13 @@ STARTTIME=$(date +%s) # time since epoch in seconds
CMDNAME=${0##*/} CMDNAME=${0##*/}
usage () { usage () {
printf "usage: %s [-ymwdnfrzuD] config-file\n" "$CMDNAME" printf "usage: %s [-ymwdnfrzuDZ] config-file\n" "$CMDNAME"
exit 1 exit 1
} }
# command-line options parsing. # command-line options parsing.
OPTIND=1 OPTIND=1
while getopts ymwdfrnzuD todo while getopts ymwdfrnzuDZ todo
do do
case "${todo}" in case "${todo}" in
y) YEARLY=y;; y) YEARLY=y;;
@@ -174,6 +177,7 @@ do
z) COMPRESS=-y;; # rsync compression. Depends on net/CPU perfs z) COMPRESS=-y;; # rsync compression. Depends on net/CPU perfs
u) NUMID="--numeric-ids";; u) NUMID="--numeric-ids";;
D) DEBUG=y;; D) DEBUG=y;;
Z) ZIPMAIL="gzip";;
*) usage;; *) usage;;
esac esac
done done
@@ -302,11 +306,16 @@ exit_handler() {
done done
printf "\n--%s\n" "$MIMESTR" printf "\n--%s\n" "$MIMESTR"
if [[ "$ZIPMAIL" == cat ]]; then
printf "Content-Type: text/plain\n"
printf 'Content-Disposition: attachment; filename="sync-log.txt"\n'
else
printf "Content-Type: application/gzip\n" printf "Content-Type: application/gzip\n"
printf 'Content-Disposition: attachment; filename="sync-log.txt.gz"\n'
fi
printf "Content-Transfer-Encoding: base64\n" printf "Content-Transfer-Encoding: base64\n"
printf 'Content-Disposition: attachment; filename="sync.log.txt.gz"\n'
printf '\n' printf '\n'
gzip | base64 $ZIPMAIL | base64
printf "\n--%s--\n" "$MIMESTR" printf "\n--%s--\n" "$MIMESTR"
} | mail -a "$MIMEHDR" -s "${SUBJECT}" "${MAILTO}" } | mail -a "$MIMEHDR" -s "${SUBJECT}" "${MAILTO}"
else else