Skip to content

Instantly share code, notes, and snippets.

@orgcontrib
Created January 27, 2025 17:14
Show Gist options
  • Save orgcontrib/049d4d4c36d22a2e9bc74f53989cb2cf to your computer and use it in GitHub Desktop.
Save orgcontrib/049d4d4c36d22a2e9bc74f53989cb2cf to your computer and use it in GitHub Desktop.
rsync-no-vanished
#!/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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment