rsync 字符集问题

Ner*_*est 7 linux rsync character-encoding

我正在尝试在 Linux 机器上使用 rsync 将 Windows 机器备份到 Linux 机器(Ubuntu 9.10),并且对于文件名中包含异常字符的文件名,我收到“文件已消失”错误。如果我使用“cp”而不是 rsync,我会收到类似的错误(“没有这样的文件或目录”)。英语 Windows 框中共享中的源代码。

字符之一是撇号字符。

我一直在玩各种 --iconv 选项,但无法解决问题。建议?

qua*_*ote 8

您正在 Linux 上从 Windows 挂载共享,然后使用 rsync 在本地复制文件。你如何挂载共享?

Windows 应该以 UTF8 或 UTF16 格式存储文件名,但您需要告诉 Linux,以便它可以正确安装共享。在挂载命令中使用utf8/utf16iocharset=utf8/ 之类的挂载选项iocharset=utf16

mount -t cifs -o utf16,other,options,here //server/share /path/to/mount/point
              ^^^^^^^^
                   |
                   -- if utf16 doesn't help, try iocharset=utf16
                      utf8 or iocharset=utf8 may also work
Run Code Online (Sandbox Code Playgroud)

其他用户表示 UTF16 更有可能是正确的。