ubuntu – 获取空文件目录的大小

我正在testing一个平面devise,而不是sql db,它使用一个嵌套的文件目录结构。 首先,我正在考虑将数据存储在文件中,但是每个文件不超过40个符号,所以为什么打开文件的时候可以从文件名中读取所有内容?但是现在我无法find真正的文件存储空间与sql表相比的差异。 我尝试了杜find它总是只显示目录大小和0B的文件..

有没有办法获得文件的实际大小? 或者至less手动计算,或猜测?

不知道我的云使用的文件系统,我猜ext4 ..操作系统是Ubuntu 14.04

编辑:

从我所了解的回应中,唯一要使用磁盘空间的是目录本身。 那是4Kb的最小值。 每个目录应该有大约300个空文件。 如果一个inode消耗至less256B,将目录膨胀到76.8Kb,但目录仍然只有4Kb。

另一件事我试图找出是SQL表和这个平坦的设置之间的区别。 当我执行

SELECT pg_size_pretty(pg_total_relation_size('table_name')); 

在表中有300条logging(而不是一个string的名称是5个字段 – 6 pk:1x ForeignKey,1xCharfield最大20 len,2x FloatField,1x IntegerField)响应说,16Kb大小。 这是postgresql 9.3和django 1.8.6。 将这些数据存储在一个SQL表格和一个空文件的名称之间真的可以有60Kb的差异吗? 或者目录不会由于inode而变得臃肿,我保存12Kb?

如果你想知道为什么我想这么多几kb,设置应该以后可以容纳100K用户与这些空文件或dblogging100x300 ..所以这是一个真正的数据GB的问题.. 🙂

如果仅使用文件名作为其名称,则将其保留为空,唯一具有实际大小的是目录本身。

要理解的关键是目录是一种有点特殊的文件 – 一个可以执行的文件( cd /dirname ),读取( ls /dirname )和写入/修改( touch /dirname/filenamerm /dirname/filename )。

一般来说,将文件添加到目录会增加它使用的空间,而删除文件会减less它。 但是,由于目录是一种“特殊types”的文件,文件系统经常以特定的行为来威胁它们。

欲了解更多信息,你可以阅读这里和这里

你可以cd进入目录并运行ls -lha ,这就是所谓的. 是你的本地目录。 请记住,你正在采取的这种方法会消耗大量的inode

编辑1:

您将看到文件大小为0B,但您可以在添加文件时看到实际上增大的本地文件夹,请检查. 目录,这是您放置的文件夹。

Macbook-Pro:/tmp/test$ ls -lha total 0 drwxr-xr-x 6 DiegoVelez wheel 204B Oct 26 20:07 . drwxrwxrwt 43 root wheel 1.4K Oct 27 09:33 .. -rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:06 file -rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:06 file2 -rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:06 file3 -rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:07 file4