25 lines
593 B
Bash
Executable File
25 lines
593 B
Bash
Executable File
#!/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
|
|
|
|
# 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
|
|
fi
|
|
|
|
exit $ret
|