本地拷贝中文名称文件至挂载的NFS目录下报错问题(编码问题)

问题背景

生产搞了套jenkins自动更新应用的,之前是通过 jenkins ssh put 升级包到远程的生产应用服务器的目录下(是挂载的公共存储);现在改为:jenkins直接挂载此公共存储,通过 cp 拷贝升级包到 nfs 目录下,实现应用包的更新覆盖。

有个中文的 excel ,直接 cp 的时候报错了,jenkins本地查看文件中文显示正确(通过 xshell,终端编码 GBK);但是拷贝不到挂载的目录下(NFS编码UTF-8);

想了个方案,jenkins 本地打成 tar 包,拷贝到 nfs 下,再执行解压,解压时还是因为此中文文件名乱码导致解压报错:无法 open: 无效的参数

问题原因

jenkins 编码和 nfs 编码不一致,导致中文名文件无法拷贝,jenkins 用的是 GBK,nfs 是 UTF-8。

解决方法

调整两个编码一致,jenkins启动脚本调整编码 export LANG=zh_CN.UTF-8 ,重启 jenkins 服务;最好把 Linux 的编码也调整 export LANG=zh_CN.UTF-8;jenkinsfile 文件也调整为 UTF-8 防止运行流水线中的中文显示乱码。