Mac上的rsync –iconv选项不起作用(从远程Linux服务器同步到本地Mac)

我想使用rsync将数据从远程Linux服务器备份到本地Mac。 我想在本地Mac上初始化这个操作。 除了有一个特殊的字符问题,所有的工作正常:每次我重新运行rsync操作(初始同步后),具有特殊字符的文件首先被删除,然后重新同步。 据我所知,不同的字符集有一个问题, 首选的解决scheme似乎是使用--iconv选项:

您可以使用rsync的–iconv选项在UTF-8 NFC和NFD之间进行转换,至less在Mac上是如此。 有一个特殊的UTF-8-mac字符集,代表UTF-8 NFD。 因此,要将文件从Mac复制到NAS,您需要运行以下操作:

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

这将在远程服务器上将所有本地文件名从UTF-8 NFD转换为UTF-8 NFC。 文件的内容不会受到影响。

问题是,这只对我来说“单向”,即从Mac同步到Linux。 但我想“走另一条路”,即从Linux机器同步到Mac。 我想从我的本地Mac初始化操作。 但是当我尝试:

 rsync -av --delete --iconv=utf-8,utf-8-mac mynas:remotedir/ localdir/ 

我收到一个错误:

 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] 

我不明白为什么这不起作用。 Mac上的我的rsync版本从2.6.9更新。 到3.1.1。 使用Macports 。 请注意,当我(在Mac上,nota bene)启动一个rsync从Mac TO Linux的操作:

 rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/ 

但是,从Mac那边走 – 这正是我想要做的 – 不起作用。

奇怪的是,testing从Linux机器启动同步呈现这个奇怪的消息:

 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] 

包括,注意,非常奇怪的索赔[server=2.6.9] ,虽然我已经更新到3.1.1在Mac上。 出于某些原因,它看起来像我的Linux机器只能看到Mac上的原始rsync版本。

任何关于如何解决这个问题的build议?

更新10月23日 :Per @ Lee Johnson的出色build议(见下文),从linux服务器启动同步现在起作用。 为了完整性,我现在尝试了所有的组合,并且出现了一个有趣的模式:

ON MAC:

作品:从Mac到Linux的文件

失败:从Linux到Mac的文件

在LINUX上

作品:从Linux到Mac的文件

失败:从Mac到Linux的文件

换句话说,– --iconv选项似乎只有一种方式,从本地机器到远程文件,而不是相反。 它看起来像一个错误,但也许这是它被支持的方式工作?

任何人都可以分享这光?

经过大量的实验,非常感谢@约翰逊的有益build议,我终于find了解决scheme,现在让我感到尴尬明显。 很多原因是我在研究这个问题的时候读到的评论,我以为你应该按照转换的顺序来指定字符集; 但它似乎不是正确的语法。 相反,应该

总是使用--iconv=utf-8-mac,utf-8从Mac初始化rsync,并始终使用--iconv=utf-8,utf-8-mac从linux机器初始化rsync时,无论如果我想从Mac或Linux机器同步文件。

那么它就像魔术一样工作!

你最近升级到OS X约塞米蒂? 我有同样的问题,之前我记得我已经更新/ usr / bin / rsync版本3.1。 当我升级到优胜美地时,它被replace为旧的2.6.9版本。

在我自己的情况下,我通过将我的3.1 rsync重新连接回到/ usr / bin来解决Mac上的问题:

 sudo -s cd /usr/bin mv rsync rsync-2.6.9 ln -s /usr/local/bin/rsync . exit