我们有一个 Windows 服务器,其文件名包含异常字符。例如picture.jpg
(不寻常的字符位于e
和之间.jpg
)。
我们将其安装为mount -t cifs -o 'ro,iocharset=utf8' //server/source-share /dest-path
iocharset=utf8
可拆卸的,它没有任何改变。
当我们使用时ls
一切正常。但 cp/rsync 和其他命令在这些文件上失败:
cp -r /dest-path /tmp
-->cp: cannot stat '/dest-path/picture .jpg': No such file or directory
您可以注意到特殊字符显示为空格。
使用 rsync 时,错误是file has vanished: "/dest-path/picture .jpg"
(也有空格)。
有什么想法可以克服这种行为吗?
更新:尝试rsync -rhicov
并rsync -av
按照建议进行。正如预期的那样,没有任何改进,因为这些选项与这个问题无关。
rsync -av /dest-path/* \tmp
给出相同的结果 ( file has vanished
)
find /dest-path -name "*.jpg" -ls
工作正常。
find /dest-path -print0 | rsync -av --files-from=- --from0 ./ /tmp
给出错误rsync: link_stat "/dest-path/picture .jpg" failed: No such file or directory (2)
刚刚测试tar czf archive.tgz /dest-path
:错误File removed before we read it
注意:ls
并find
显示文件名,但特殊字符显示为空格(我刚刚用十六进制编辑器检查过)。其他一些特殊字符已正确处理,并且可以与 rsync 一起正常工作。
因此这可能是 CIFS 模块内的问题。