summaryrefslogtreecommitdiffstats
path: root/support/rsync-slash-strip
diff options
context:
space:
mode:
Diffstat (limited to 'support/rsync-slash-strip')
-rwxr-xr-xsupport/rsync-slash-strip24
1 files changed, 24 insertions, 0 deletions
diff --git a/support/rsync-slash-strip b/support/rsync-slash-strip
new file mode 100755
index 0000000..b57e61c
--- /dev/null
+++ b/support/rsync-slash-strip
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+# This script can be used as an rsync command-line filter that strips a single
+# trailing slash from each arg. That treats "src/" the same as "src", thus
+# you need to use "src/." or "src//" for just the contents of the "src" dir.
+# (Note that command-line dir-excludes would need to use "excl//" too.)
+#
+# 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 $REAL_RSYNC "${args[@]}"