Problem Escaping Spaces in File Name

Mike Bombich mike at bombich.com
Mon Jan 5 16:44:05 GMT 2009


Take a look at the "--protect-args" argument as well, this is probably  
a more elegant solution.

        -s, --protect-args
               This option sends all filenames and some options to the  
remote rsync without allowing the remote shell to  interpret  them.
               This means that spaces are not split in names, and any  
non-wildcard special characters are not translated (such as ~, $, ;,
               &, etc.).  Wildcards are expanded on the remote host by  
rsync (instead of the shell doing it).

               If you use this option with --iconv, the args will also  
be translated from the local  to  the  remote  character-set.   The
               translation happens before wild-cards are expanded.   
See also the --files-from option.


Mike

On Jan 5, 2009, at 10:29 AM, Jon wrote:

> As is always the case, I seem to have solved it a few minutes after  
> writing this email.
>
> Turns out I don't need to escape it at all if I wrap the entire  
> source path in double quotes. I had tried only wrapping the final  
> directory in double quotes and that was failing.
>
> Thanks
>
> Jon
>
> Jon wrote:
>> Hi All,
>> I realize this has been addressed ad naseum, but I simply cannot  
>> seem to solve my issue despite many hours of mucking about. I am  
>> attempting to run a command like:
>> rsync -prvl --delete --stats --progress -e 'ssh -p 22 -i /root/.ssh/ 
>> id_dsa' backup/company/data/current_backup/company_Ralf/doc\\\ -\\\  
>> network/ root at server.domain.com:"/drives/m/mirrorcentralstoredir/ 
>> company/'doc - network/'" > '/backup/company/logs/Sync_company_doc  
>> - network_temporary_log_file.log'
>> I am getting the error:
>> rsync: link_stat "/backup/company/data/current_backup/company_Ralf/ 
>> doc\ -\ network/." failed: No such file or directory (2)
>> That particular call is escaped three times as per one of the  
>> examples on [1], but I have tried one and two escapes as well.
>> I have attempted all manners of escaping listed on the Rsync site  
>> [1], but to no avail. I suspect that is because I am using rsync  
>> through SSH and those examples deal with connecting to the rsync  
>> daemon on the remote system.
>> I have tried wrapping the source path in single quotes and double  
>> quotes (and the single then double quote as listed in [1])  as well  
>> as escaping the space with a varying number of backslashes and I  
>> always get the same error.
>> I have verified that the source directory does indeed exist.
>> I am not an expert is escaping, but I believe the command is  
>> escaped twice. Once in the script that makes the call, once on the  
>> host OS when the rsync call is made.
>> Can someone save me from my madness and point out what I am not  
>> seeing?
>> Thanks
>> Jon
>> [1]. http://samba.anu.edu.au/rsync/FAQ.html#9
> -- 
> 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



More information about the rsync mailing list