6

(bash) 对于特定目录,我需要发现该文件系统支持的最大文件大小。有问题的文件系统可能是从外部 USB 介质安装的,可能是 FAT32、NTFS、exfat 或 ext2。

我知道我可以部分猜测来自 的信息mount,但我想要一个更简洁的解决方案 - 加上在 exfat 的情况下,mount将文件系统类型显示为“fuseblk”。

(我正在运行 Linux 3.2.0-4-686-pae #1 SMP Debian 3.2.51-1 i686 GNU/Linux)


getconf FILESIZEBITS path不适用于fuseblk安装 exfat 文件系统:它返回 32,这是不准确的。所以这不是一个通用的解决方案。

4

2 回答 2

5

我想你可以用getconf /path这个。在它打印的众多尺寸中,还有FILESIZEBITS. APUE对此表示:

以有符号整数值表示指定目录中允许的常规文件的最大大小所需的最小位数

存在一些getconf不返回文件系统特定信息的问题:

getconf 原则上不能回答这样的问题,因为它依赖于文件系统。

事实并非如此:

[cnicutar@lux ~]$ getconf FILESIZEBITS /some/fuseblk/mount
32

[cnicutar@lux ~]$ getconf FILESIZEBITS /
64
于 2014-02-21T06:24:59.057 回答
2

编辑:正如另一个答案所说,您可以使用getconf FILESIZEBITS /mypath来找出文件大小可能具有的最大位数,从而找出支持的最大文件大小 - 将这些与http://en.wikipedia.org/wiki交叉引用/Integer_%28computer_science%29#Common_integral_data_types了解与之相关的文件大小(以字节为单位)。

您还可以对照列表交叉引用文件系统,例如http://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits

df -T为您提供可能有助于准确识别文件系统的输出。

值得注意的是,还存在其他限制,可能小于文件系统施加的限制,例如 ulimit 指定的文件大小限制。您可以使用 查询和设置它ulimit -f,但在大多数系统上它将是“无限的”。

于 2014-02-21T06:34:32.303 回答