summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsupport/rsync-no-vanished13
-rwxr-xr-xsupport/rsync-slash-strip9
2 files changed, 19 insertions, 3 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
diff --git a/support/rsync-slash-strip b/support/rsync-slash-strip
index 2869e45c..b57e61c5 100755
--- a/support/rsync-slash-strip
+++ b/support/rsync-slash-strip
@@ -6,12 +6,19 @@
#
# To use this, name it something like "rs", put it somewhere in your path, and
# then use "rs" in place of "rsync" when you are typing your copy commands.
+
+REAL_RSYNC=/usr/bin/rsync
+
args=()
for arg in "${@}"; do
+ if [[ "$arg" == --server ]]; then
+ exec $REAL_RSYNC "${@}"
+ exit $? # Not reached
+ fi
if [[ "$arg" == / ]]; then
args=("${args[@]}" /)
else
args=("${args[@]}" "${arg%/}")
fi
done
-exec /usr/bin/rsync "${args[@]}"
+exec $REAL_RSYNC "${args[@]}"