On Aug 17, 2015, at 3:06 PM, Joe <[email protected]> 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