我通常在两台 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]
但是,我将对这个进一步的问题进行单独的查询。
OS X 10.5 有 rsync 2.6.9 但 iconv 选项仅在 rsync 3.x 中可用....
要在您的 Mac 上更新 rsync,您可以使用 macports(安装说明)。
此处提供了 Macport(和 Homebrew)教程。