(bash)如何找到文件系统支持的最大文件大小?

时间:2014-02-21 06:17:52

标签: linux bash filesystems fuse fat32

(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不适用于exfat文件系统的fuseblk版本:它返回32,不准确。所以这不是一般解决方案。

2 个答案:

答案 0 :(得分:4)

我认为您可以使用getconf /path。在它打印的众多尺寸中,还有FILESIZEBITSAPUE对此进行了说明:

  

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

有些人担心getconf不会返回特定于文件系统的信息:

  

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

事实并非如此:

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

[cnicutar@lux ~]$ getconf FILESIZEBITS /
64

答案 1 :(得分:1)

编辑:正如另一个答案所说,您可以使用getconf FILESIZEBITS /mypath找出文件大小可能具有的最大位数,从而获得支持的最大文件大小 - 对{{3}进行交叉引用了解与...相关的文件大小(以字节为单位)。

您还可以根据http://en.wikipedia.org/wiki/Integer_%28computer_science%29#Common_integral_data_types

等列表交叉引用文件系统

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

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