Disk-Usage
du 隨著時間的推移顯示不同的數字,以及不合理的小文件大小
我在 bash 腳本中執行這樣的東西:
set -x time convert 'cat.png' -quality 100 test.webp time convert 'cat.png' -quality 100 test.jpeg du -h test.webp test.jpeg
它通常會像這樣列印輸出:
+ du -h test.webp test.jpeg 512 test.webp 387K test.jpeg
512
webp 文件的字節數似乎小到不可思議,對吧?當我
du -h
在終端中執行之後,它會顯示不同的大小(這更合理)。我知道
du
沒有--apparent-size
顯示底層儲存大小(例如塊數乘以某個因子),但我仍然希望它始終列印相同的確定性結果。到底是怎麼回事?
在某些文件系統上,例如 ZFS 和 Btrfs,
du
without的結果--apparent-size
會隨著時間而變化。無法保證文件系統不會隨著時間的推移延遲、重新排列、壓縮、重複數據刪除或以其他方式修改物理儲存。
因此,plain
du
可以隨時給出不同的結果。詳細範例:
strace -v
在du
呼叫顯示上執行顯示從stat
-type 系統呼叫返回的數據;第一的:newfstatat(AT_FDCWD, "test.webp", { ... st_blksize=131072, st_blocks=1, st_size=464124, ...
不久之後:
newfstatat(AT_FDCWD, "test.webp", { ... st_blksize=131072, st_blocks=1029, st_size=464124, ...