我想使用rsync将数据从远程
Linux服务器备份到我的本地Mac.我想在我的本地Mac上初始化此操作.除了存在特殊字符问题外,一切正常:每次重新运行rsync操作(初始同步后),首先删除具有特殊字符的文件,然后重新同步.据我所知,不同的字符集存在问题,
preferred solution似乎是使用–iconv选项:
You can use rsync’s –iconv option to convert between UTF-8 NFC & NFD,
at least if you’re on a Mac. There is a special utf-8-mac character
set that stands for UTF-8 NFD. So to copy files from your Mac to your
NAS, you’d need to run something like:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
This will convert all the local filenames from UTF-8 NFD to UTF-8 NFC on the
remote server. The files’ contents won’t be affected.
问题是,这对我来说只是“单向”,即从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)从Mac到Linux启动rsync时,操作才有效:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
但是从Mac那里走另一条路 – 这就是我想做的事 – 并不起作用.
奇怪的是,测试从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],虽然我已经在Mac上更新到3.1.1.由于某些原因,它看起来我的Linux机器’只看到’Mac上的原始rsync版本.
有关如何解决这个问题的任何建议?
更新10月23日:根据@Lee Johnson的优秀建议(见下文),从linux服务器启动同步现在可以正常工作.为了完整起见,我现在尝试了所有组合,并出现了一个有趣的模式:
ON MAC:
工作:从Mac到Linux的文件
失败:从Linux到Mac的文件
在LINUX上
工作:从Linux到Mac的文件
失败:从Mac到Linux的文件
换句话说, – ionv选项似乎只有一种方式,从本地机器到远程的文件,而不是相反.对我来说这看起来像个错误,但也许这就是支持它的工作方式?
有人能分享一下吗?