diff --git a/lib/rclone.sh b/lib/rclone.sh index 96375ff..9ab5838 100644 --- a/lib/rclone.sh +++ b/lib/rclone.sh @@ -98,7 +98,7 @@ _rclone_cmd() { local rc=0 if [[ -n "${_TRANSFER_LOG:-}" && "$subcmd" == "copy" ]]; then echo "=== rclone copy $* ===" >> "$_TRANSFER_LOG" - rclone "$subcmd" "${rclone_opts[@]}" --verbose "$@" > >(tee -a "$_TRANSFER_LOG") 2>&1 || rc=$? + rclone "$subcmd" "${rclone_opts[@]}" --verbose "$@" > >(_snaplog_tee) 2>&1 || rc=$? else rclone "$subcmd" "${rclone_opts[@]}" "$@" || rc=$? fi diff --git a/lib/snaplog.sh b/lib/snaplog.sh index 7cffc2d..cc5b5b6 100644 --- a/lib/snaplog.sh +++ b/lib/snaplog.sh @@ -4,6 +4,16 @@ [[ -n "${_GNIZA4LINUX_SNAPLOG_LOADED:-}" ]] && return 0 _GNIZA4LINUX_SNAPLOG_LOADED=1 +# Tee helper: writes each line to the transfer log, app log, and stderr (TUI). +# Used as process substitution target: cmd > >(_snaplog_tee) 2>&1 +_snaplog_tee() { + while IFS= read -r line; do + echo "$line" >> "${_TRANSFER_LOG}" + [[ -n "${LOG_FILE:-}" ]] && echo "$line" >> "${LOG_FILE}" + echo "$line" >&2 + done +} + # Initialize snapshot log directory and transfer log file. snaplog_init() { _SNAP_LOG_DIR=$(mktemp -d "${WORK_DIR}/gniza-snaplog-XXXXXX") diff --git a/lib/transfer.sh b/lib/transfer.sh index 9e964bf..50e3ec0 100644 --- a/lib/transfer.sh +++ b/lib/transfer.sh @@ -57,7 +57,7 @@ rsync_to_remote() { local rc=0 if [[ -n "${_TRANSFER_LOG:-}" ]]; then echo "=== rsync: $source_dir -> ${REMOTE_USER}@${REMOTE_HOST}:${remote_dest} ===" >> "$_TRANSFER_LOG" - "${rsync_cmd[@]}" > >(tee -a "$_TRANSFER_LOG") 2>&1 || rc=$? + "${rsync_cmd[@]}" > >(_snaplog_tee) 2>&1 || rc=$? else "${rsync_cmd[@]}" || rc=$? fi @@ -133,7 +133,7 @@ rsync_local() { local rc=0 if [[ -n "${_TRANSFER_LOG:-}" ]]; then echo "=== rsync (local): $source_dir -> $local_dest ===" >> "$_TRANSFER_LOG" - rsync "${rsync_opts[@]}" "$source_dir" "$local_dest" > >(tee -a "$_TRANSFER_LOG") 2>&1 || rc=$? + rsync "${rsync_opts[@]}" "$source_dir" "$local_dest" > >(_snaplog_tee) 2>&1 || rc=$? else rsync "${rsync_opts[@]}" "$source_dir" "$local_dest" || rc=$? fi