TrueNAS文件名长度限制问题,尤其是中文文件名 您所在的位置:网站首页 ISO中文名长 TrueNAS文件名长度限制问题,尤其是中文文件名

TrueNAS文件名长度限制问题,尤其是中文文件名

2024-01-04 22:48| 来源: 网络整理| 查看: 265

问题:最近在将windows电脑上文件向truenas拷贝的过程中,发现了一个问题,明明在windows系统中可以正常访问和创建的超长中文文件名文件(80-100字),不管是通过smb、sftp还是ssh向truenas传输都会出现“文件名过长”的报错或者直接卡住。

最开始发现这个问题的时候也去查了很多资料,因为是中文文件名,所以讨论的人并不多,也没什么发现,一直以为是windows smb或者truenas系统配置的问题,最后发现是自己没有认真看文档。。。

爬坑经历就不说了,直接说结论吧。

结论:

windows使用NTFS文件系统的时候,文件名长度限制为255个字符,注意是字符!路径长度限制一般是255还是260字符。

我实际测试过感觉到不了,最长大概是247个字符左右(含路径,路径长则文件名就短),即便我在注册表里面开启了LongPathsEnabled,但是依旧不能解除限制,不知道是什么bug

到了truenas这边的ZFS文件系统,它属于是Linux系里面场景的文件系统吧,这类的文件系统包括ext4这些,文件名长度限制是255个字节,对是字节不是字符!而路径长度一般都长达4096字节或者无限制。

这里注意有字符和字节的差别就够了。

各文件系统的对比可以参考维基:https://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits

一般情况下,如果是英文文件名,字节和字符就没有什么区别了,但是到了中文文件名的时候就有区别了,因为一个中文字符往往占用多个字节,尤其Linux系统的默认编码方式还是UTF-8,UTF-8一个中文汉字需要占用3个字节的空间,这样就会出现英文文件名可以长达255个字符,而中文文件名只能85个汉字,出现了巨大的差异的情况。

这个限制是linux系统与生俱来的的限制,几乎没法修改,所以作为用户只能接受这个设定了。并且在今后的使用中避免生成过长的中文文件名。

搞清楚这个问题之后,以后再遇到windows向linux拷贝文件出现文件名超长的情况,就可以自己实际计算一下当前windows的文件名以UTF-8编码计算占了多少字节(汉字、中文符号都是3字节,英文、数字、英文符号都是1字节),通过删减和修改文件名让文件名的字节数少于255就可以正常传输文件了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有