summaryrefslogtreecommitdiffstats
path: root/support/rsync-no-vanished
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 16:14:31 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 16:14:31 +0000
commit2d5707c7479eacb3b1ad98e01b53f56a88f8fb78 (patch)
treed9c334e83692851c02e3e1b8e65570c97bc82481 /support/rsync-no-vanished
parentInitial commit. (diff)
downloadrsync-2d5707c7479eacb3b1ad98e01b53f56a88f8fb78.tar.xz
rsync-2d5707c7479eacb3b1ad98e01b53f56a88f8fb78.zip
Adding upstream version 3.2.7.upstream/3.2.7
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'support/rsync-no-vanished')
-rwxr-xr-xsupport/rsync-no-vanished24
1 files changed, 24 insertions, 0 deletions
diff --git a/support/rsync-no-vanished b/support/rsync-no-vanished
new file mode 100755
index 0000000..b31a5d2
--- /dev/null
+++ b/support/rsync-no-vanished
@@ -0,0 +1,24 @@
+#!/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