我一直在使用字符“:”和“|” 作为文件名的一部分,在 Ubuntu 18.04 中没有任何问题,可以在 NTFS 外部驱动器中创建文件。上周我安装了 Ubuntu 22.04,但无法将名称中包含这些字符的文件写入我的 NTFS 驱动器。返回的错误是“无效参数”。我做了一些研究,但找不到与这个明显的巨大变化相关的任何东西。所以我的问题是:有人知道吗?是永久改变吗?只是一个错误?我应该放弃使用 NTFS 吗?感谢您的任何建议。
我一直在使用字符“:”和“|” 作为文件名的一部分,在 Ubuntu 18.04 中没有任何问题,可以在 NTFS 外部驱动器中创建文件。上周我安装了 Ubuntu 22.04,但无法将名称中包含这些字符的文件写入我的 NTFS 驱动器。返回的错误是“无效参数”。我做了一些研究,但找不到与这个明显的巨大变化相关的任何东西。所以我的问题是:有人知道吗?是永久改变吗?只是一个错误?我应该放弃使用 NTFS 吗?感谢您的任何建议。
你是对的,有一个变化......从内核 5.15开始,一个新的 NTFS 驱动程序(模块)被集成到内核中......它被称为NTFS3,它取代(过时)旧的 NTFS 内核驱动程序(模块)本身和 NTFS -3G(用于 FUSE 的 NTFS 驱动程序)。
旧的驱动程序很宽松,允许使用 Windows 不允许的文件名,要么是因为它们包含一些不允许的字符(即九个字符“* / : < > ? \ | 和那些代码小于 0x20 的字符),要么是因为最后一个字符是空格或点......而新驱动程序没有。
字符 ':' 和 '|' 微软在 NTFS 文件名中正式禁止。参见例如https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions。Linux 能够绕过该限制并创建包含这些字符的文件名,但这可以理所当然地被认为是一个错误,并且可能会导致访问该文件系统的 Windows 系统出现严重问题。此错误已得到修复,Linux NTFS 驱动程序现在尊重 NTFS 限制。