Pro*_*700 12 filesystem files directory filename
长期使用Windows系统,我知道在某些时候,当文件和文件夹名称变得太长时,会出现错误窗口。
当我尝试使用 SFTP 将文件从服务器备份到以下文件夹时发生了这种情况(例如):
D:(Windows drive partition)/Temporary/Projects/2015-06/Websites/Guitar-Site/Images/Logos/Manufacturers/Instruments/Basses/(long file name).png
Run Code Online (Sandbox Code Playgroud)
如您所见,有时我倾向于构建非常指定的文件夹路径,如果文件名也很长,NTFS 可能无法以这种方式保存它。
我目前担心我的物理备份,因为我的备份驱动器上的文件夹路径将添加/backups/(drive name)/...到所有文件路径。
在 ext4/Ubuntu 中是否有任何这样的限制(或类似的限制)我必须注意?
小智 18
最大文件名长度为 255 字节。在ext4的wiki 页面中找到。
并且最大路径为 4096 个字符。在这个 Unix&Linux SE 问题中找到。
虽然,我确实发现这篇 wiki 文章没有在 ext4 中指定最大文件路径。
正如 @sergiy-kolodyazhny 所说,最大文件名长度取决于文件系统,绝大多数将文件名长度限制为 255 字节。
他的图表中一个值得注意的遗漏是光学介质。虽然 UDF 和 Rock Ridge 扩展对文件名具有相同的 255 个字符限制,但没有 Rock Ridge 和 Joliet 的 ISO9660 都有更严格的限制,如果您正在执行诸如备份下载之类的操作,您实际上可能会遇到这些限制youtube-dl。
如果您的光盘母带处理程序可以选择以在实践中似乎不会造成任何损害的方式打破规范,那么 Joliet 文件名将限制为 64 个 UTF-16 代码点或其中的 103 个。
同样,ISO 9660 Levels 2 & 3(没有 Rock Ridge 扩展)的文件名仅限于 31 个字符或 37 个字符(如果您对规范要求不严格)。
ISO 9660:1999 受 genisoimage 支持,但不受 K3b 等前端支持,其限制为 207 字节(不带 Rock Ridge)或 197 字节(带 Rock Ridge)。
(来源:genisoimage联机帮助页)
至于最大路径长度,这是一个很大的误解。大多数 Linux 文件系统都没有一个。
有一个名为 的常量PATH_MAX,但它只是某些 POSIX API 的最大值,您可以解决 这个问题。
这种“路径长度无限制”约定的唯一相应例外是 FAT32 和 exFAT(32,760 个 Unicode 字符)、NTFS 和 ReFS(32,767 个 Unicode 字符)、UDF(1,023 字节)和 ISO 9660(不清楚,但我已经看到它表示为 180、207、212 或 222 字节)。
通过运行这个小型 Python 程序,然后浏览生成的目录,可以轻松演示这一点。
import os
for X in range(20):
os.mkdir('x' * 255)
os.chdir('x' * 255)
Run Code Online (Sandbox Code Playgroud)
Mybash会在提示中显示整个路径,但会遇到问题。然而 my zsh,它在提示中仅显示当前文件夹,不会有任何问题,甚至有一个pwd内置的可以毫无问题地显示整个 5000+ 字节路径。