拒绝 cp/rsync/etc 一些带有奇怪字符的文件

拒绝 cp/rsync/etc 一些带有奇怪字符的文件

我们有一个 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 -rhicovrsync -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

注意:lsfind显示文件名,但特殊字符显示为空格(我刚刚用十六进制编辑器检查过)。其他一些特殊字符已正确处理,并且可以与 rsync 一起正常工作。
因此这可能是 CIFS 模块内的问题。

相关内容