相关疑难解决方法(0)

在 rsync 或 afpd 中将 UTF-8 NFD 文件名转换为 UTF-8 NFC

我有一个运行 FreeNAS 8 的家庭文件服务器。几天前,我使用 rsync 从 Mac 上传我的整个 iTunes 库,以便我可以通过网络加载我的库,而不是从慢速 USB 驱动器上加载。这基本上有效,现在 iTunes 运行得更好,但我在访问任何包含非 ascii 字符的歌曲时遇到问题(我在加载 Queensrÿche 曲目时第一次注意到这个问题)。这些文件会显示在 Finder 中,但任何访问它们的尝试都会使它们消失,直到我重新连接到服务器。

经过一番研究,我发现这是因为 OSX 使用与 Linux 不同的 UTF 字符顺序。OSX 文件系统使用 Unicode Normalization Form D (NFD),而 linux 使用 Form C (NFC)。Rsync 在执行从我的 mac 到服务器的复制时不会转换这些形式,现在当 iTunes 尝试通过网络访问具有特殊字符的文件时,服务器上的文件的编码错误并且 afpd 报告它们没有存在。

解决这个问题的最佳方法是什么?是否可以在将基本库上传到服务器时让 rsync 执行 unicode 转换?我可以将 afpd 配置为以 NFD 格式传输/接收文件名吗?有没有简单的解决方案来更改服务器上的文件名?我发现了一些关于名为 convmv 的程序的内容,但我不知道是否可以在 FreeNAS 上运行它。

afp rsync mac-osx utf-8 freenas

27
推荐指数
3
解决办法
2万
查看次数

Mac 上的 rsync --iconv 选项不起作用(从远程 Linux 服务器同步到本地 Mac)

我想使用 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 …
Run Code Online (Sandbox Code Playgroud)

linux backup mac rsync

11
推荐指数
2
解决办法
1万
查看次数

标签 统计

rsync ×2

afp ×1

backup ×1

freenas ×1

linux ×1

mac ×1

mac-osx ×1

utf-8 ×1