rsync字符集问题

rsync字符集问题

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

其中一个字符是撇号字符。

我尝试过各种 --iconv 选项,但还是无法解决问题。有什么建议吗?

答案1

您正在 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

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

答案2

解决此问题的一种方法是 - 对于具有特殊字符文件名的有限目录,对该目录进行 zip 或 tar 压缩,然后使用 rsync 排除该目录(但包括 zip/tar 文件)。

相关内容