diff options
Diffstat (limited to 'support/rsync-no-vanished')
-rwxr-xr-x | support/rsync-no-vanished | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/support/rsync-no-vanished b/support/rsync-no-vanished index 0f0bb22f..b31a5d21 100755 --- a/support/rsync-no-vanished +++ b/support/rsync-no-vanished @@ -1,12 +1,21 @@ #!/usr/bin/env bash +REAL_RSYNC=/usr/bin/rsync IGNOREEXIT=24 IGNOREOUT='^(file has vanished: |rsync warning: some files vanished before they could be transferred)' +# If someone installs this as "rsync", make sure we don't affect a server run. +for arg in "${@}"; do + if [[ "$arg" == --server ]]; then + exec $REAL_RSYNC "${@}" + exit $? # Not reached + fi +done + set -o pipefail -rsync "${@}" 2>&1 | (grep -E -v "$IGNOREOUT" || true) -ret=$? +# This filters stderr without merging it with stdout: +{ $REAL_RSYNC "${@}" 2>&1 1>&3 3>&- | grep -E -v "$IGNOREOUT"; ret=${PIPESTATUS[0]}; } 3>&1 1>&2 if [[ $ret == $IGNOREEXIT ]]; then ret=0 |