我有一些文件 returns du -h
,512
我的理解是它應該返回帶單位的數字。這是什麼意思 ?實際使用的磁碟空間是多少?
好文件
(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0958
36K 2020.110/drr0/X1.0060_0958
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0958
-rw-rw-rw- 1 user11 users 36628 Jul 29 18:43 2020.110/drr0/X1.0060_0958
壞文件
(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0957
512 2020.110/drr0/X1.0060_0957
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0957
-rw-rw-rw- 1 user11 users 0 Jul 29 18:51 2020.110/drr0/X1.0060_0957
答案1
du 從不顯示單位。請注意在這兩種情況下輸出中沒有“B”(代表位元組)——“人類可讀”模式僅顯示乘數前綴(K, M, G) 但不是單位本身。由於 1024 以下的數字沒有前綴,因此不會顯示任何前綴。
通常「du」以區塊為單位測量文件(請參閱手冊頁),但使用「-h」選項時,單位始終為 1 個位元組。所以當du -h
show時512
,那就是 512 位元組。
為什麼是 512 而不是 0?參見phuclv的回答
答案2
檔案並不總是佔用磁碟空間。資料區塊少於實際大小的檔案將報告為較少的區塊數
- 稀疏文件只會在磁碟上儲存非零區塊。因此,只有 5MB 非零資料的 50TB 稀疏檔案將只消耗約 5MB 的磁碟空間
- 內聯文件還將消耗資料區域中的 0 字節,因為它們直接儲存在元資料本身中。在 NTFS 中它被稱為居民檔案以及後來的許多其他 Linux 檔案系統,例如 ext4 或Btrfs也支援類似的功能
- 壓縮檔案壓縮後塊數也較少
可能您的檔案是內聯的。由於它沒有分配的區塊,因此報告的數量ls
將為 0 stat
。在 ext4 中,只有與 inode 大小(256+ 位元組)相比非常小的檔案可以內聯,因此您可能正在使用其他檔案系統,例如 NTFS 或 Btrfs
您可以使用--apparent-size
中的選項du
查看實際尺寸
--apparent-size
列印表觀大小,而不是磁碟使用;雖然表觀大小通常較小,但由於(「稀疏」)檔案中的漏洞、內部碎片、間接區塊等,它可能會更大