IIRC 我的操作系统课程,Linux 中目录的大小由其包含的文件数量决定([维基百科链接])1
那么,为什么只有2个文件的目录占用了32000个块?
# stat .
File: «.»
Size: 16855040 Blocks: 32968 IO Block: 4096 directorio
Device: 6805h/26629d Inode: 3047425 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 501/ jboss) Gid: ( 501/ jboss)
Access: 2011-08-26 12:00:20.000000000 +0200
Modify: 2011-08-26 10:58:07.000000000 +0200
Change: 2011-08-26 10:58:07.000000000 +0200
该目录可能在过去的某个时间点包含大量文件(数千个),但现在没有了。这是怎么回事?
答案1
您的目录可能已经发生了很多操作,而操作系统尚未回收已使用的空间。您可以通过重新排列内容来解决这个问题,如果您调用了占用所有空间的目录,bigdir
那么您可以
mkdir newdir
mv bigdir/* newdir
rmdir bigdir
mv newdir bigdir
确保在进行混洗时,任何访问 bigdir 的内容都不会被访问。
答案2
一旦目录不再使用,文件系统就不一定会回收其中的块。