Files
ext4 中的“幽靈”文件?(ktorrent 分配的磁碟空間)
我正在使用 KTorrent 下載,並註意到當我選擇“在啟動 torrent 之前分配磁碟空間”時,它會在啟動時創建所有文件,可能是空的,以避免碎片。
當我在文件夾中並使用
ls
時,它會顯示分配的大小,但也會顯示總大小,並且這兩個不會相加。df
也只報告實際使用的空間。ls -lH
總計 745M -rw-r--r-- 1 ##### ##### 542M 2 月 8 日 15:55 星際迷航 - 1x01 - The Cage.avi -rw-r--r-- 1 ##### ##### 351M Feb 8 14:37 Star Trek - 1x02 - Where No Man Has Gone Before.avi -rw-r--r-- 1 ##### ##### 346M 2 月 8 日 16:04 星際迷航 - 1x03 - Corbomite Maneuver.avi -rw-r--r-- 1 ##### ##### 350M 2 月 8 日 16:02 星際迷航 - 1x04 - Mudd's Women.avi -rw-r--r-- 1 ##### ##### 350M Feb 8 15:35 Star Trek - 1x05 - The Enemy Within.avi -rw-r--r-- 1 ##### ##### 350M Feb 8 15:37 Star Trek - 1x06 - The Man Trap.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 - The Man Trap.avi ....(大小匹配)
這怎麼可能?文件系統(ext4)中是否有一些“文件大小”設置,
ls
讀取(有時)並df
忽略?
Ktorrent 使用稀疏文件。基本上,稀疏文件是帶有“漏洞”的文件:沒有實際磁碟空間用於文件的“空”區域(即僅包含零)。
因此,您的文件似乎具有一定的大小(在您的情況下,是您的星際迷航影片的大小),但實際上並未將磁碟空間用於尚未“填充”的那些區域(在您的情況下,Ktorrent尚未下載),從而避免在真正需要之前浪費磁碟空間。
相反,文件系統使用元數據來指示這些區域是空的。如果你從他們那裡讀取,你只會得到零。
您可以使用 or 來查看此類文件的實際磁碟使用情況,以及使用
du
or來查看ls -s
其明顯的磁碟使用du -b
情況ls -l
。
df
並且報告的總大小ls -l
僅顯示實際磁碟使用情況。