Linux打包文件到Windows,文件/文件类型丢失 原因压缩包里的文件名编码错位了Linux 和 Windows 对文件名的编码约定不一样Linux文件系统统一用UTF-8保存文件名1 个汉字 3 字节ZIP/TAR 格式本身默认不记录编码Windows 解压时如果没看到 UTF-8 标记就会按系统 ANSI 码页中文 Windows 是GBK1 个汉字 2 字节去解读文件名。于是 UTF-8 的字节流被按 GBK 两两配对去硬解问题就出在配对错位上汉字部分是 UTF-8每字 3 字节。如果汉字总字节数恰好能被 2 整除后面的.pptx是纯 ASCII能侥幸保留 → 这就是你截图里第三个文件名字是乱码但还认得是 PowerPoint如果多出 1 个落单的字节这个字节会把紧跟的.点一起吞进一个乱码字符里点号消失剩下pptx连在乱码后面。Windows 认为扩展名是整串乱码自然不认识类型就显示为普通的文件 → 截图里前两个文件就是这样。所以这不是文件坏了只是文件名连同扩展名的点被错误解码了PPT 内容本身是完好的。解决办法把顶层目录作为打包对象先cd到顶层目录的上一级用相对路径打包整个目录树cd/data/reportszip-r-UNUTF8 archive.zip2026年度汇报/这样完整保留2026年度汇报/华东区/上海/xxx.pptx这种多层结构-UNUTF8对**所有条目包括各级中文目录名**都打上 UTF-8 标志位Windows 解压后目录名、文件名、扩展名全部正常用相对路径打包压缩包里不会带上/data/reports这种服务器绝对路径。如果想把当前目录下所有内容都打包zip-r-UNUTF8 archive.zip.只想打包 pptx、但保留目录骨架用find找出所有层级的 pptx喂给zip -路径原样存入解压时自动重建中间目录cd/data/reportsfind.-typef-name*.pptx|zip-UNUTF8 archive.zip -文件名带空格也没问题按行读取只要文件名里没有换行符就行。两个小提醒如果服务器上的zip是精简版如 busybox不支持-UN改用 7z效果相同7z a-mcuon archive.zip2026年度汇报/打包完可以先自检一下unzip -l archive.zip在 Linux 终端里看到中文目录/文件名正常显示就说明 UTF-8 存储没问题Windows 那边双击解压即可。核心原则就一句递归靠传目录或find不要靠*.pptx通配符中文靠-UNUTF8或-mcuon打标志位两者结合目录结构和扩展名就都保住了。