Ubuntu 和 Mac 之间的 Rsync:如何让 iconv 选项发挥作用

Ubuntu 和 Mac 之间的 Rsync:如何让 iconv 选项发挥作用

我通常在两台 Ubuntu 机器之间备份,但现在我想使用 rsync 备份我的 Ubuntu 服务器,其中磁盘位于 Mac 上。但我无法让它正常工作。

第一次一切顺利,但显然 mac 和 ubuntu 机器之间的特殊字符存在问题,因为此后每次我运行 rsync 操作时,都会先删除带有特殊字符的文件,然后重新同步。似乎字符集不同存在问题。

首选解决方案似乎是使用该--iconv选项:

您可以使用 rsync 的 --iconv 选项在 UTF-8 NFC 和 NFD 之间进行转换,至少如果您使用的是 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 似乎无法识别该选项,因为我得到:

>     MyMachine:~ Macuser$ /usr/bin/rsync -av --delete --iconv=utf-8,utf-8-mac user@linuxmachine:/home/linuxuser/Test/ /Users/Macuser/Test/
>     rsync: --iconv=utf-8,utf-8-mac: unknown option
>     rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-42/rsync/main.c(1333) [client=2.6.9]

关于如何解决这个问题有什么建议吗?

请注意,上面的“代码示例”中可能有点隐藏,我的 Mac 上的 rsync 版本是 2.6.9。

编辑:虽然 Jan 解决了这个问题(参见我勾选的答案),但我仍然没有完全解决,因为我现在收到了一个新的错误:

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]

我会单独的查询但是对于这个进一步的问题。

答案1

OS X 10.5 有 rsync 2.6.9,但是 iconv 选项仅在 rsync 3.x 中可用....

要在 Mac 上更新 rsync,您可以使用 macports (安装说明)。

Macport (和 Homebrew) 教程可用这里

相关内容