往群晖里拷文件为什么会有奇怪的文件名长度的限制?

windows系统有一个路径长度限制

Windows操作系统的文件系统采用了一种叫做NTFS(New Technology File System)的文件系统,而NTFS文件系统对文件路径的长度有一定的限制。具体来说,Windows文件路径最大长度为260个字符。


在 Windows API ((以下段落) 中介绍的一些例外情况)中,路径的最大长度为MAX_PATH,定义为 260 个字符。 本地路径按以下顺序构建:驱动器号、冒号、反斜杠、用反斜杠分隔的名称组件以及终止 null 字符。 例如,驱动器 D 上的最大路径为“D:\some 256 个字符的路径字符串
<NUL>”,其中“<NUL>”表示当前系统代码页的不可见终止 null 字符。 (此处使用的字符 <> 是为了直观明了,不能是有效路径 string 的一部分。)

这260个字符的限制包含了整条路径的文字、标点符号。

如果超过长度了,文件在windows中可能面临不可写入、不可删除、不可移动的窘境。对于不知道原因的用户就会显得手足无措。

虽然网盘或NAS并不使用windows系统作为操作系统,但是大多数用户日常会使用win,所以这个路径长度问题不管NAS用什么分区都不能避开。譬如你从网盘上下载一个文件名长度接近260字符的文件,放到本地文件夹里,加上文件夹路径,总路径长度超过了260个字符,这个文件很可能下载失败或者下载后没办法删除。

为了兼容来回copy文件造成的可能因文件名长度造成的各种问题,成熟的跨平台存储系统都会去限制文件名长度(通常是256减去常见的文件夹路径长度,如:C:\Users\[User Name]\Downloads),以留有余地。

对于已经在群晖的为啥能改名超过限定字符数,大概率是产品界面设计时没考虑到260字符限制的情况,属于边界限定没有闭环,如果改名了并超过了260字符限制,在win上使用一样要出问题。

                                                                            巴别鸟文件名长度限定在100个字符

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注