Solved

Rsync to remote server over SSH - Maintain spaces in filenames

Posted on 2011-03-25
8
662 Views
Last Modified: 2012-05-11
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
Comment
Question by:goodie069
  • 5
  • 3
8 Comments
 
LVL 19

Accepted Solution

by:
simon3270 earned 500 total points
ID: 35215805
Are you using the "--protect-args" option?  That seems to leave spaces alone.
0
 

Author Comment

by:goodie069
ID: 35215900
I receive an error when I include that argument:

rsync: --protect-args: unknown option
0
 

Author Comment

by:goodie069
ID: 35215916
I'm using rsync-2.6.8-3.1.i386
0
Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

 
LVL 19

Expert Comment

by:simon3270
ID: 35215988
protect-args seems to be a v3 option - can you upgrade your client?
0
 

Author Comment

by:goodie069
ID: 35216052
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
 
LVL 19

Expert Comment

by:simon3270
ID: 35216138
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
 

Author Comment

by:goodie069
ID: 35217581
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
 

Author Closing Comment

by:goodie069
ID: 35217591
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

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Free HD cloner 11 63
AWS- KeepAlived notify script not working 23 86
What is CMR CACHE? 7 33
fedora linux on laptop - setup sendmail - or some kind of email 5 45
By default, Carbonite Server Backup manages your encryption key for you using Advanced Encryption Standard (AES) 128-bit encryption. If you choose to manage your private encryption key, your backups will be encrypted using AES 256-bit encryption.
Create your own, high-performance VM backup appliance by installing NAKIVO Backup & Replication directly onto a Synology NAS!
To efficiently enable the rotation of USB drives for backups, storage pools need to be created. This way no matter which USB drive is installed, the backups will successfully write without any administrative intervention. Multiple USB devices need t…
This tutorial will walk an individual through configuring a drive on a Windows Server 2008 to perform shadow copies in order to quickly recover deleted files and folders. Click on Start and then select Computer to view the available drives on the se…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question