Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 696
  • Last Modified:

Rsync to remote server over SSH - Maintain spaces in filenames

I am performing an rsync from one CentOS server to another remote CentOS server over SSH (using private keys). I am transferring a directory that contains numerous sub-directories and files - many of which contain spaces in them.

The problem is that the remote rsync is escaping the spaces in the filenames like so:
CO Ltr ID-00020 USA Ltr.docx  --->   CO\ Ltr\ ID-00020\ USA\ Ltr.docx

I understanding the reasoning behind this (rsync uses spaces between arguments and filenames, etc) -- I'm just looking for a workaround.

This rsync job, once working properly, will run 4 times a day to update / transfer changes to ensure this directory is identical on both systems.

Is there any way, using rsync or another script, to ensure that filenames containing spaces are maintained as-is and are not escaped during the transfer? Or if they must be escaped, any help on a script to remove the slashes on the remote system after transfer would be nice, although not an ideal solution. It's important that the directory structure and files are identical between the two machines.

Thanks,
Chris
0
goodie069
Asked:
goodie069
  • 5
  • 3
1 Solution
 
simon3270Commented:
Are you using the "--protect-args" option?  That seems to leave spaces alone.
0
 
goodie069Author Commented:
I receive an error when I include that argument:

rsync: --protect-args: unknown option
0
 
goodie069Author Commented:
I'm using rsync-2.6.8-3.1.i386
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
simon3270Commented:
protect-args seems to be a v3 option - can you upgrade your client?
0
 
goodie069Author Commented:
I'd rather not. Haven't had many pleasant experiences with replacing core packages in CentOS, and a quick google search shows a number of forum posts with people who tried and failed.

I suppose I could try and rollback if it failed, but do you have any other ideas before I go that route?

Thanks.
0
 
simon3270Commented:
It looks as though deleting the \ from the target server may be the best option, then, though that may be difficult.

I have tried a few shell fixes, but in most cases, the shell itself removes the '\', meaning that commands such as "mv" fail to find the source file.  For example:
cd /root/to/copied/files
find . -type f | while read nam
do
  mv "$nam" "$(echo $nam | tr -d \\)"
done

Open in new window

fails because the "$nam" after the mv has already had the \ removed, so doesn't find the original file.
0
 
goodie069Author Commented:
Yeah, did the same thing to me. Thanks for trying though.

Actually, I just went ahead and let the rsync complete with the escaped spaces, then accessed those files through the ajax file manager and found that the files are displayed and download without the slashes -- all of the spaces are where they should be and, to the end user, the file names look identical.

So I think this will work as-is. As long as rsync sees the file names as identical (so it doesn't copy them each time, just updates) and as long as they appear identical to the user I'm good. I think I'll just leave it as-is.

Thanks again for the the attempts. I'll award you full points since I think your --protect-args option would have solved this if I was able to upgrade to 3.0.

0
 
goodie069Author Commented:
Didn't work for me since I didn't want to upgrade the base rsync package in CentOS, but this would have worked otherwise.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now