I want to use rsync to backup my Ubuntu server with a disk residing on a Mac. But I do not get it to work properly, since every time I re-run the rsync operation after the initial time, the files with special characters are first deleted and then re-synced. It seems as if there is a problem with different character sets.
The preferred solution seems to be to use the --iconv
option:
You can use rsync's --iconv option to convert between UTF-8 NFC & NFD, at least if you're on a Mac. There is a special utf-8-mac character set that stands for UTF-8 NFD. So to copy files from your Mac to your NAS, you'd need to run something like:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
This will convert all the local filenames from UTF-8 NFD to UTF-8 NFC on the remote server. The files' contents won't be affected.
Thanks to @Jan, I updated my rsync version on my mac from 2.6.9. to 3.1.1. Still, I am still not quite there, since I now receive a further error:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
I am at loss to understand why "requested action not supported" since it seems that the rsync version on my Ubuntu (12.04) is post 3.x.x, and thus should support the --iconv
option.
EDIT: Let me add that when I (on the Mac, nota bene) initiate a rsync FROM the Mac TO Linux, everything works splendidly:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
But going the other way' from the mac does not work. Strangely enough, testing to initiate the rsync from the linux machine renders this strange message:
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
including the very strange claim [server=2.6.9]
, although I have updated to 3.1.1 on the Mac. For some reasons, it looks as my linux machine 'sees' only the original rsync version on the Mac.
Any suggestion on how to solve this?