我想使用rsync用Mac上的磁盘备份Ubuntu服务器。但是我无法使其正常工作,因为每次在初始时间之后每次重新运行rsync操作时,带有特殊字符的文件都会先删除然后重新同步。似乎不同的字符集存在问题。
在首选的解决方案似乎是使用--iconv
选项:
至少在Mac上,您可以使用rsync的--iconv选项在UTF-8 NFC和NFD之间转换。有一个特殊的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。文件内容不会受到影响。
感谢@Jan,我从2.6.9 更新了Mac上的rsync版本。至3.1.1。不过,由于我现在收到另一个错误,所以我还不在那里:
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]
我不知为何要理解为什么“不支持请求的操作”,因为似乎我的Ubuntu(12.04)上的rsync版本是3.xx后,因此应该支持该--iconv
选项。
编辑:让我补充一点,当我(在Mac上,不是一个人)在Mac上启动rsync到Linux时,一切工作都非常出色:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
但是从Mac转到另一种方式行不通。奇怪的是,从Linux机器启动rsync的测试呈现了以下奇怪消息:
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]
,尽管我在Mac上已更新为3.1.1。由于某些原因,它看起来像我的linux计算机在Mac上仅“看到”原始的rsync版本。
关于如何解决这个问题的任何建议?