我一直使用字符“:”和“|”作为文件名的一部分,在 Ubuntu 18.04 中创建 NTFS 外部驱动器中的文件时没有任何问题。上周我安装了 Ubuntu 22.04,但无法将名称包含这些字符的文件写入我的 NTFS 驱动器。返回的错误是“无效参数”。我做了一些研究,但找不到与这个明显巨大的变化相关的任何内容。所以我的问题是:有人知道这个吗?这是一个永久性的变化吗?只是一个错误吗?我应该放弃使用 NTFS 吗?感谢您的任何建议。
答案1
你说得对,确实有变化... 作为内核 5.15一个新的 NTFS 驱动程序(模块)被集成到内核中...它被称为NTFS3它取代(淘汰)旧的 NTFS 内核驱动程序(模块)本身和 NTFS-3G(FUSE 的 NTFS 驱动程序)。
这老司机是宽容的,允许使用 Windows 不允许的文件名,因为它们包含一些不允许的字符(这九个字符是“* / : < > ? \ | 以及代码小于 0x20 的字符),或者因为最后一个字符是空格或点...而新司机没有。
NTFS 的原始内核级支持早在 2001 年就被贡献到 Linux 内核中,并且功能非常有限,尤其是写入支持。到目前为止,NTFS-3G 是 Linux 中启用 NTFS 的实际方式。但是,NTFS-3G 是用户空间中的文件系统 (FUSE)。此实现的主要缺点是性能。相反,NTFS3 是内核 NTFS 实现,它提供的性能比基于 FUSE 的实现快得多。
答案2
Microsoft 正式禁止在 NTFS 文件名中使用字符“:”和“|”。例如,请参阅https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions。Linux 能够绕过该限制并创建包含这些字符的文件名,但这可以被视为一个错误,并可能导致访问该文件系统的 Windows 系统出现严重问题。此错误已修复,Linux NTFS 驱动程序现在遵守 NTFS 限制。