我尝试使用 Linux 机器上的 rsync 将 Windows 机器备份到 Linux 机器(Ubuntu 9.10),如果文件名中包含不寻常的字符,则会收到“文件已消失”错误。如果我使用“cp”而不是 rsync,也会收到类似的错误(“没有这样的文件或目录”)。源代码位于英语 Windows 机器上的共享中。
其中一个字符是撇号字符。
我尝试过各种 --iconv 选项,但还是无法解决问题。有什么建议吗?
答案1
您正在 Linux 上安装 Windows 上的共享,然后使用 rsync 在本地复制文件。如何安装共享?
Windows 应该以 UTF8 或 UTF16 存储文件名,但您需要告诉 Linux,以便它能够正确挂载共享。在挂载命令中使用挂载选项,如utf8
/utf16
或iocharset=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 文件)。