一个目录中可以包含多少个文件?


21

这个问题与有关。

我使用动画,可以生成通常存储在单个目录中的很多文件(+/- 1,000,000)。在Mac Os X上,出现了超过+/- 30,000个文件的错误,因此我经常将动画分为多个目录。

在Ubuntu上,单个目录可以容纳的文件数是否有限制?

Answers:


32

Ubuntu没有限制目录的大小,它是由文件系统强加的。每个文件和目录都是一个所谓的索引节点。您可以df -i用来检查正在使用并且可用于所有已挂载文件系统的索引节点数。

我刚刚创建了100万个文件,一个文件没有问题,因为我的ext4主分区50 GB(46 GiB)的inode限制足够大。

我使用shell扩展来创建文件,并结合了touch实用程序:

mkdir test
cd test
touch {0..300000}
touch {300000..600000}
touch {600000..900000}
touch {900000..1000000}

这将创建1000001个文件,可以使用进行验证ls | wc -l。为什么300000..600000300001..600000呢?因为我太懒了,所以不能将1放在最后。

df -i 看起来像:

/dev/sda6            3055616 1133635 1921981   38% /home

现在删除测试文件(cd ..&&rm -f test花了更长的时间,所以使用rm文件名):

rm {0..300000}
rm {300000..600000}
rm {600000..900000}
rm {900000..1000000}
cd ..
rmdir f

删除文件后,正在使用的inode数量立即减少:

/dev/sda6            3055616  133634 2921982    5% /home

请注意,即使文件系统允许如此大量的文件,将如此大的文件存储在单个目录中也是一个可怕的想法。至少使用结构类似的子目录f/i/l/e/filename.ext。程序通常不希望有如此大量的文件。


1
ext4是文件系统类型,而不是文件扩展名。您无法创建用于编辑队列的目录吗?我怀疑这些程序能否在如此大的文件量下运行良好。
Lekensteyn 2011年

1
我当然可以。我只是想着要解决的问题。您对Adobe After Effects的看法是正确的,“肯定会崩溃,但不要怀疑Autodesk的家伙,他们编写了惊人的代码... =)看起来就像在使用Ferrari。非常容易崩溃,非常快速且强大,因为它被挡在了地面上。希望我的英语说得通。
2011年

1
我明白。是的,名声正好17.000 ^^
Lekensteyn 2011年

1
在删除文件之前,请尝试在Nautilus中打开此目录,然后看看会发生什么;)。
马里奥(Mario)

1
@bzero请为此提出一个新问题。
Lekensteyn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.