Nic*_*ede 11 linux backup mac rsync
我想使用 rsync 将数据从远程 Linux 服务器备份到本地 Mac。我想在我的本地 Mac 上初始化这个操作。除了有一个特殊字符问题外,一切正常:每次我重新运行 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 同步到 linux 时。但我想“走另一条路”,即从 linux 机器同步到 Mac。我想从我的本地 Mac 初始化操作。但是当我尝试:
rsync -av --delete --iconv=utf-8,utf-8-mac mynas:remotedir/ localdir/
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
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]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么这不起作用。我在 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/
Run Code Online (Sandbox Code Playgroud)
但是从 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]
Run Code Online (Sandbox Code Playgroud)
包括,请注意,非常奇怪的声明[server=2.6.9],尽管我已在 Mac 上更新到 3.1.1。由于某些原因,看起来我的 linux 机器在 Mac 上只能“看到”原始 rsync 版本。
关于如何解决这个问题的任何建议?
10 月 23 日更新:根据 @Lee Johnson 的极好建议(见下文),从 linux 服务器启动同步现在可以工作了。为了完整起见,我现在尝试了所有组合,出现了一个有趣的模式:
在 MAC 上:
作品:从 Mac 到 Linux 的文件
失败:从 Linux 到 Mac 的文件
在 Linux 上
作品:从 Linux 到 Mac 的文件
失败:从 Mac 到 Linux 的文件
换句话说,该--iconv选项似乎只能以一种方式工作,将文件从本地机器传输到远程机器,而不是相反。对我来说它看起来像一个错误,但也许这就是它应该工作的方式?
任何人都可以分享这方面的光吗?
Nic*_*ede 13
经过大量试验,并且非常感谢@Lee Johnson 的有用建议,我终于找到了解决方案,现在让我感到非常尴尬。很大程度上由于我在研究问题时读到的评论,我认为您应该按照转换顺序指定字符集;但这似乎不是正确的语法。而是应该
始终--iconv=utf-8-mac,utf-8在从 mac--iconv=utf-8,utf-8-mac初始化 rsync 时使用,并且在从 linux 机器初始化 rsync 时始终使用,无论我是想从 mac 还是 linux 机器同步文件。
然后它就像魔术一样工作!
您最近是否升级到 OS X Yosemite?我遇到了同样的问题,在我记得我已经用 3.1 版更新了 /usr/bin/rsync 之前。当我升级到 Yosemite 时,它被旧的 2.6.9 版本所取代。
在我自己的情况下,我通过将我的 3.1 rsync 重新链接回 /usr/bin 来解决了 Mac 上的问题:
sudo -s
cd /usr/bin
mv rsync rsync-2.6.9
ln -s /usr/local/bin/rsync .
exit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11816 次 |
| 最近记录: |