Invoking rsync from a script with null parameters

Kevin Korb kmk at sanitarium.net
Mon Nov 5 09:06:55 MST 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Very interesting.  It does appear to take '' or "" as if it were "./"
in fact it appears to tale " " or ' ' as "./ " which throws an error.

I think the reason I haven't seen this before is that I always built
up a $RSYNC_PARAMS variable and passed that to rsync.  That variable
always had some params in it just they weren't always the same.

On 11/05/12 02:39, Joe wrote:
> 
> No.  I traced the heck out of it (bash -vx ...) and I was actually 
> sending a null parameter as the first argument to rsync and that
> made it get out of bed on the wrong side.
> 
> Here are some more details as to what happened:
> 
> http://askubuntu.com/questions/112717/rsync-copies-files-from-working-directory-in-addition-to-the-requested-ones/113431
>
>  Essentially, rsync worked, but additionally processed all the
> files in the current working directory when that wasn't expressly
> requested. Since null parameters are almost totally invisible, it
> took awhile to find.
> 
> Sorry I didn't include more details in my original post.
> 
> On the bright side, this is what caused me to join this list.
> I've learned a lot - mostly by lurking.
> 
> Thanks. Joe
> 
> On 11/04/2012 10:35 PM, Kevin Korb wrote:
>> I suspect you are missing a space somewhere and are ending up
>> with 2 parameters stuck together. You can have bash output the
>> rsync command line it intends to run to make sure or you can just
>> use " " instead of "" as extra spaces between parameters will
>> have no effect.
> 
>> On 11/04/12 22:23, Joe wrote:
>>> I'm working on a bash backup script using rsync. (kubuntu
>>> precise 12.04, rsync 3.0.9-1ubuntu1)
> 
>>> To avoid having a number of slightly different rsync commands,
>>> I would like to use shell variables as part of the rsync
>>> command. I.e.: DRYRUN="-n" rsync "${DRYRUN}" more parameters
>>> ...
> 
>>> This does not work if DRYRUN="" - apparently because this
>>> command becomes rsync "" more parameters ... instead of rsync
>>> more parameters ...
> 
>>> and rsync uses the null parameter for something and does not 
>>> perform as expected. It does not generate any error or
>>> diagnostic message.
> 
>>> Is there a way to get around this problem - other than coding
>>> each permutation of the command separately?
> 
>>> I'm experimenting with putting the whole rsync command in a
>>> string so I can run it after any null parameters revert to pure
>>> white space. Once I get the quoting to work (preserving those
>>> quotes I still need), this method should work, but it's less
>>> than elegant.
> 
>>> Is this a bug in rsync? (Shouldn't it at least complain/error
>>> exit if it gets something like this that it doesn't
>>> understand?) If it is, what's the best way to report it?
> 
>>> Ideally (for me anyway), I would like it to completely ignore
>>> any null parameters, but I don't know what problems that might
>>> cause for other people.
> 
>>> TIA
> 
>>> Joe
> 
> 
> 

- -- 
~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~
	Kevin Korb			Phone:    (407) 252-6853
	Systems Administrator		Internet:
	FutureQuest, Inc.		Kevin at FutureQuest.net  (work)
	Orlando, Florida		kmk at sanitarium.net (personal)
	Web page:			http://www.sanitarium.net/
	PGP public key available on web site.
~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iEYEARECAAYFAlCX5B8ACgkQVKC1jlbQAQex4wCfVsvSAj12z/xZYtAUOwJtWWS1
hdcAn0SUcRTr3HXqFpQdWtSDHa/GR+q+
=kko1
-----END PGP SIGNATURE-----


More information about the rsync mailing list