Make an rsync using script with old and new versions of rsync without using the "old" way (--old-args)?
wayne at opencoder.net
Sat Sep 10 15:20:21 UTC 2022
On Fri, Sep 2, 2022 at 1:19 AM c.buhtz wrote:
> 4. `--protect-args` activates the "new" behavior
Essentially, just in a way that has a couple drawbacks: it would have
refused to work with rsyncs older than 3.0.0, and it would have refused to
work with a remote rrsync setup (since the "protected" args are sent via
the protocol where rrsync can't see them to verify them).
5. `--old-args` and `--protect-args` are the opposite of each other?
Yes, protecting the args prevents things like remote space splitting and
My goals are
> 1. Use the "new" arg protection way introduced with 3.2.4
> 2. Scripts/applications using that "new way" should work with old and
> new versions of rsync without checking for the rsync version on the
> current system.
The easiest way to do that in a script or even in a user's shell-rc files
is to export 2 environment variables:
If rsync is 3.2.4 or newer, it will see the newer env var and continue with
its new-style arg protection (since the 0 tells it you don't
want --old-args to be used). An older rsync will not even notice that
variable and will instead ensure that --protect-args is enabled by default,
giving it a similar style of arg protection, just one that will complain if
a remote rsync is 2.6.9 (which should be pretty much gone these days) or an
rrsync restricted shell. These variables don't interfere with manual
overrides on the command-line -- they just ensure the default is what you
Your suggestion of forcing on --seclude-args (aka --protect-args) via -s is
also a reasonable way to go in most instances.
I'm using `-s` here because `--protect-args` will be renamed to
> `--secluded-args` in rsync 3.2.6.
Just because --secluded-args is its new name doesn't mean that rsync stops
accepting the older arg name. But -s is always easier to type.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rsync