AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 859945
Accepted
Prototype700
Prototype700
Asked: 2016-12-13 10:09:19 +0800 CST2016-12-13 10:09:19 +0800 CST 2016-12-13 10:09:19 +0800 CST

Ubuntu中文件路径的最大长度是多少?

  • 772

长期使用 Windows 系统,我知道在某个时候,当文件和文件夹名称变得太长时,会出现错误窗口。

当我尝试使用 SFTP 将文件从服务器备份到(例如)以下文件夹时,这发生在我身上:

D:(Windows drive partition)/Temporary/Projects/2015-06/Websites/Guitar-Site/Images/Logos/Manufacturers/Instruments/Basses/(long file name).png

如您所见,有时我倾向于构建非常指定的文件夹路径,如果文件名恰好也很长,NTFS 可能无法以这种方式保存它。

我目前正在担心我的物理备份,因为我的备份驱动器上的文件夹路径将添加/backups/(drive name)/...到所有文件路径中。

在 ext4/Ubuntu 中是否有任何这样的限制(或类似的限制)我需要注意?

files
  • 4 4 个回答
  • 27141 Views

4 个回答

  • Voted
  1. Best Answer
    jtoscarson
    2016-12-13T10:35:37+08:002016-12-13T10:35:37+08:00

    最大文件名长度为 255 个字节。在ext4的 wiki 页面中找到。

    最大路径为 4096 个字符。在这个 Unix&Linux SE Question 中找到。

    虽然,我确实发现这篇 wiki 文章没有在 ext4 中指定最大文件路径。

    • 21
  2. ssokolow
    2019-09-02T03:19:31+08:002019-09-02T03:19:31+08:00

    正如@sergiy-kolodyaznyy 所说,最大文件名长度将取决于文件系统,并且绝大多数文件名长度限制为 255 个字节。

    他的图表中一个值得注意的遗漏是光学媒体。虽然 UDF 和 Rock Ridge 扩展对文件名有相同的 255 个字符限制,但没有 Rock Ridge 和 Joliet 的 ISO9660 都有更严格的限制,如果您正在执行诸如备份youtube-dl下载之类的操作,您实际上可能会遇到这些限制。

    Joliet 文件名限制为 64 个 UTF-16 代码点或其中的 103 个,如果您的光盘母带处理程序可以选择以在实践中似乎不会造成伤害的方式违反规范的话。

    同样,没有 Rock Ridge 扩展的 ISO 9660 级别 2 和 3 仅限于 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)
    

    在提示符中显示整个路径的Mybash会遇到问题。但是zsh,在提示符中仅显示当前文件夹的 my 不会有任何问题,甚至有一个pwd内置函数可以毫无问题地显示整个 5000+ 字节的路径。

    • 5
  3. Sergiy Kolodyazhnyy
    2019-01-12T15:48:49+08:002019-01-12T15:48:49+08:00

    路径名限制取决于使用的文件系统。jtoscarson 的回答涵盖了 Ubuntu 上默认的 ext4,但是您可以在 Ubuntu 上使用各种文件系统。引用 WerkkreW关于 serverfault 的答案,这里有一些文件系统及其限制:

    BTRFS   255 bytes
    exFAT   255 UTF-16 characters
    ext2    255 bytes
    ext3    255 bytes
    ext3cow 255 bytes
    ext4    255 bytes
    FAT32   8.3 (255 UCS-2 code units with VFAT LFNs)
    NTFS    255 characters
    XFS     255 bytes
    

    另请注意,各种文件系统对文件名中可以​​出现哪种类型的字符有限制。例如,文件名ext4不能包含 NULL 和/. 另请参阅 Wikipedia article for filesystem comparisons。

    另请注意,Linux 文件系统必须考虑POSIX 定义:

    3.266 路径名

    用于标识文件的字符串。在 IEEE Std 1003.1-2001 的上下文中,路径名最多由 {PATH_MAX} 个字节组成,包括终止的空字节。它有一个可选的起始斜杠,后跟零个或多个用斜杠分隔的文件名。路径名可以可选地包含一个或多个尾部斜杠。多个连续的斜线被认为与一个斜线相同。

    从limits.h:

    {PATH_MAX}

    路径名中的最大字节数,包括终止空字符。可接受的最小值:{_POSIX_PATH_MAX}

    {_POSIX_PATH_MAX}

    路径名中的最大字节数。价值:256

    • 2
  4. Ciro Santilli OurBigBook.com
    2019-01-12T15:26:47+08:002019-01-12T15:26:47+08:00

    我相信确定这一点的最可靠方法是使用pathconf(".", _PC_PATH_MAX);POSIX 函数,该函数确定给定路径的最大路径。

    正如函数所暗示的,这可能因文件系统而异。

    我不知道暴露它的命令行实用程序。这是一个最小的 C 示例:https ://stackoverflow.com/questions/16285623/how-to-get-the-to-get-path-to-the-current-file-pwd-in-linux-from-c /54155296#54155296

    • 0

相关问题

  • 如何轻松加密文件?

  • 如何使用 Ubuntu One 与朋友共享文件夹?

  • 如何从命令行获取文件的 mime 类型?

  • examples.desktop 是做什么的?

  • 查看或转换 MDI 文件 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve