if [ "xallx" = "x${PUSHTYPE}x" ]; then
# Default normal "fire and forget" push. We background that, we do not care about the mirrors doings
- echo "Sending normal push" >> "${LOGDIR}/${MIRROR}.log"
+ log "Sending normal push" >> "${LOGDIR}/${MIRROR}.log"
PUSHARGS1="sync:all"
ssh -f $SSH_OPTIONS "${HOSTNAME}" "${PUSHARGS} ${PUSHARGS1}" >>"${LOGDIR}/${MIRROR}.log"
elif [ "xstagedx" = "x${PUSHTYPE}x" ] || [ "xmhopx" = "x${PUSHTYPE}x" ]; then
# Want a staged push. Fine, lets do that. Not backgrounded. We care about the mirrors doings.
- echo "Sending staged push" >> "${LOGDIR}/${MIRROR}.log"
+ log "Sending staged push" >> "${LOGDIR}/${MIRROR}.log"
# Only send stage1 if we havent already send it. When called with stage2, we already did.
if [ "xstage2x" != "x${PUSHKIND}x" ]; then
# This is a little racy, especially if the other parts decide to do this
# at the same time, but it wont hurt more than a mail too much, so I don't care much
if [ ${tries} -ge ${PUSHDELAY} ]; then
- echo "Failed to wait for all other mirrors. Failed ones are:" >> "${LOGDIR}/${MIRROR}.log"
+ log "Failed to wait for all other mirrors. Failed ones are:" >> "${LOGDIR}/${MIRROR}.log"
for file in ${PUSHLOCKS}; do
if [ ! -f ${file} ]; then
- echo "${file}" >> "${LOGDIR}/${MIRROR}.log"
+ log "${file}" >> "${LOGDIR}/${MIRROR}.log"
error "Missing Pushlockfile ${file} after waiting ${tries} second, continuing"
fi
done
return
else
PUSHARGS2="sync:stage2"
- echo "Now doing the second stage push" >> "${LOGDIR}/${MIRROR}.log"
+ log "Now doing the second stage push" >> "${LOGDIR}/${MIRROR}.log"
ssh $SSH_OPTIONS "${HOSTNAME}" "${PUSHARGS} ${PUSHARGS2}" >>"${LOGDIR}/${MIRROR}.log" 2>&1
fi
else
# to the address configured in MAILTO (if non-empty)
error () {
log "$@"
- if [ -z "${MAILTO}" ]; then
+ if [ -n "${MAILTO}" ]; then
echo "$@" | mail -e -s "[$PROGRAM@$(hostname -s)] ERROR [$$]" ${MAILTO}
fi
}
if [ -n "${HOOKSCR}" ]; then
log "Running hook $HOOKNR: ${HOOKSCR}"
set +e
- "${HOOKSCR}"
+ ${HOOKSCR}
result=$?
set -e
- log "Back from hook $HOOKNR, got returncode ${result}"
+ if [ ${result} -ne 0 ] ; then
+ error "Back from hook $HOOKNR, got returncode ${result}"
+ else
+ log "Back from hook $HOOKNR, got returncode ${result}"
+ fi
return $result
else
return 0
done
mv "${torotate}" "${torotate}.0"
}
+
+# Return rsync version
+rsync_protocol() {
+ RSYNC_VERSION="$(${RSYNC} --version)"
+ RSYNC_REGEX="(protocol[ ]+version[ ]+([0-9]+))"
+ if [[ ${RSYNC_VERSION} =~ ${RSYNC_REGEX} ]]; then
+ echo ${BASH_REMATCH[2]}
+ fi
+ unset RSYNC_VERSION RSYNC_REGEX
+}