Re: Make an rsync using script with old and new versions of rsync without using the "old" way (--old-args)?

2022-09-10 Thread Wayne Davison via rsync
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
such.

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:

export RSYNC_OLD_ARGS=0
export RSYNC_PROTECT_ARGS=1

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
want.

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.

..wayne..
-- 
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html


Make an rsync using script with old and new versions of rsync without using the "old" way (--old-args)?

2022-09-02 Thread c.buhtz--- via rsync

Hello,

this is not a usual support question which could be solved by reading 
documentation. I'm an upstream maintainer highly depending on rsync. I'm 
doing some research to better understand the behavior change [1] about 
argument protection when using spaces in path names. I'm not sure if I 
understand all details correct. And that is why I'm asking here. I would 
like to have a confirmation that I understand the details correct and 
that my "solution" is a good choice or if there are alternatives.


Let's see what I currently "know" and please correct me if I'm wrong.

 1. rsync version 3.2.3 (and older) doing it the "old" way which is 
unusual or unexpected by the users because it is not the way other 
applications usually handle path names in arguments.
 2. rsync version 3.2.4 (and younger) doing it the "new" way which is 
IMHO the recommended and preferd way.

 3. `--old-args` activates the "old" behavior
 4. `--protect-args` activates the "new" behavior
 5. `--old-args` and `--protect-args` are the opposite of each other? 
(See that Issue [6])
 6. `--old-args` exist in 3.2.4 (and younger) as a workaround to keep 
old scripts working
 7. `--protect-args` was introduced much earlier with 3.0.0 [2] to 
activate the "new" way


Am I correct so far?

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.


My goals in short: I want one way that will work now, in the feature and 
with all rsync versions.


Based on my current research it seems to me the solution would be to 
modify calls like this


rsync -aiv host:"a simple file.pdf" .

to this with replacing double with single quotes and adding `-s` (short 
for `--protect-args`):


rsync -s -aiv host:'a simple file.pdf' .

I'm using `-s` here because `--protect-args` will be renamed to 
`--secluded-args` in rsync 3.2.6 [3].


Sidenote: I still asked that question here [4] and here [5].

 [1] -- 


 [2] -- 
 [3] -- 
 [4] -- 
 [5] -- 
 [6] -- 

--
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html