我正在使用 KTorrent 下载,并注意到当我选择“在启动 torrent 之前分配磁盘空间”时,它会在启动时创建所有文件(可能是空的),以避免碎片。
当我在文件夹中并使用 时ls
,它显示分配的大小,但也显示总大小,而这两者不相加。df
还仅报告实际使用的空间。
LS-lH
总计745M -rw-r--r-- 1 ##### ##### 542M 二月 8 15:55 星际迷航 - 1x01 - The Cage.avi -rw-r--r-- 1 ##### ##### 351M 二月 8 14:37 星际迷航 - 1x02 - 无人前去的地方.avi -rw-r--r-- 1 ##### ##### 346M 二月 8 16:04 星际迷航 - 1x03 - The Corbomite Maneuver.avi -rw-r--r-- 1 ##### ##### 350M 二月 8 16:02 星际迷航 - 1x04 - Mudd's Women.avi -rw-r--r-- 1 ##### ##### 350M 二月 8 15:35 星际迷航 - 1x05 - 内部敌人.avi -rw-r--r-- 1 ##### ##### 350M 二月 8 15:37 星际迷航 - 1x06 - 男人陷阱.avi ... (还有很多)
但是,通过该-s
选项,我可以获得实际尺寸:
LS-S
总计728M 0 星际迷航 - 1x01 - The Cage.avi 351M 星际迷航 - 1x02 - 前无古人后无来者之地.avi 42M 星际迷航 - 1x03 - Corbomite Maneuver.avi 195M 星际迷航 - 1x04 - Mudd's Women.avi 5.8M 星际迷航 - 1x05 - 内部敌人.avi 9.7M 星际迷航 - 1x06 - 男人陷阱.avi ....(尺寸匹配)
这怎么可能?文件系统(ext4)中是否有一些“文件大小”设置,可以ls
读取(有时)并df
忽略?
答案1
Ktorrent 正在使用稀疏文件。基本上,稀疏文件是一个带有“漏洞”的文件:没有实际的磁盘空间用于文件的“空”区域(即仅包含零)。
因此,您的文件看起来具有一定的大小(在您的情况下,是您的《星际迷航》视频的大小),但实际上没有将磁盘空间用于那些尚未“填充”的区域(在您的情况下,Ktorrent 的部分)尚未下载),从而避免在真正需要时浪费磁盘空间。
相反,文件系统使用元数据来指示这些区域是空的。如果你要读取它们,你只会得到零。
du
您可以使用或查看此类文件的实际磁盘使用情况,并使用或ls -s
查看其表观磁盘使用情况。du -b
ls -l
df
和报告的总大小ls -l
仅显示真实的磁盘使用情况。