我不确定这是否适用于Unix或任何其他操作系统,除了Windows,因此标题。当您查看Windows中文件的属性时,您会看到磁盘上的大小和大小。有人能解释一下两者的区别吗?
发布于 2013-07-12 20:57:17
“磁盘上的大小”考虑到可能应用于文件的任何压缩,以及写入文件的最后一个分配单元末尾的“松弛”空间。
NTFS允许透明压缩/解压缩文件。压缩文件时,它的大小保持不变(即文件中数据的大小),但是文件的磁盘占用空间可能更小,因为NTFS驱动程序将透明地压缩写入磁盘的文件数据。
文件系统将文件存储在原子分配单元中--在NTFS和(ex)FAT的情况下是一个“集群”。给定卷的集群大小可能有所不同( NTFS的集群大小从4K到64K不等,其他文件系统的集群大小可能有所不同)。比单个集群更小的文件将存储在单个集群中,因此占用至少一个群集的磁盘空间。您的文件大小不太可能是集群大小的确切倍数,因此为文件分配的最后一个集群将包含文件数据和占用上一个集群中未使用部分的“松弛”数据的组合。“磁盘上的大小”也计算这个“空闲”空间。
值得注意的是,当涉及NTFS时,可以将非常小的文件存储在该文件的主文件表(MFT)条目中(文件名、文件数据和文件属性之和为1024字节或更少的文件)。该文件仍将在磁盘上显示NTFS卷的群集大小大小。
稀疏文件是一种机制,在这种机制中,文件看起来非常大,但包含大量的零区域,且数据运行很少。NTFS支持稀疏文件,并会将磁盘上的大小报告为数据运行所使用的实际区域(不包括零)。
编辑:
正如syneticon所指出的,这个问题当然也适用于其他操作系统。du命令的GNU版本有一个--apparent-size参数,它将显示文件的数据大小,而不是磁盘上的大小(du的默认大小)。有时候,每一个尺寸都是相关的,了解差异是个好主意。
https://serverfault.com/questions/522977
复制相似问题