我通常在两台 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]
我会单独的查询但是对于这个进一步的问题。