On Aug 17, 2015, at 3:06 PM, Joe <jose...@main.nc.us> wrote:
> First, let me state the obvious. It looks like your code is executing rsync 
> in a bash one liner once for each file that find returns. That's not cool! 
> And it's almost definitely not what you wanted to do.

It is perfect;y acceptable and definitely ‘cool’. This gives me stats on each 
file, which is what I want.

> Among other things, that means that bash is seeing all those embedded blanks 
> and the parentheses in your file names and getting upset because blanks 
> delimit arguments and parentheses are used for a number of syntactically 
> meaningful things.

That does not explain why bash is perfectly happy with the command line if it 
is a locally mounted disk (the same disk, in fact). Despite the error, this is 
not a bash problem.

> So, at a minimum, you need to escape/quote *both* of your file references {} 
> - not just the one.

Find’s {} is escaped, just doesn’t seem to be escaped properly via ssh/rysnc.

As I said, this works:

find . -type f -atime -1 -exec rsync -aP {} /Drive5/{}

This fails if there are ()’s in the file name.

find . -type f -atime -1 -exec rsync -aP {} 10.0.0.11:/Drive5/{}

> But the real issue is that you should probably let find put all the resulting 
> file names into a file or pipe and send that to rsync once using something 
> like
>           --files-from=FILE       read list of source-file names from FILE
> where you should be able to use "-" as the file name so it uses the output of 
> the find command as input to rsync.

Hmm. Maybe. I’ll play with that.

-- 
Why live in the world when you can live in your head?

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

Reply via email to