Ubuntu
ls 和 du 關於文件大小的分歧,相差幾個數量級
有誰明白我為什麼會得到這些結果?請注意以下兩個命令之間的文件大小差異:
$ ls -lh gauss_landmarks_0000.npy -rw-rw-r-- 1 dparks dparks 1.1G Aug 16 12:43 gauss_landmarks_0000.npy $ du -h gauss_landmarks_0000.npy 20M gauss_landmarks_0000.npy
這發生在如下所示的機器上:
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial
我自己的 linux mint 筆記型電腦上的結果按預期顯示:
$ lsb_release -a No LSB modules are available. Distributor ID: LinuxMint Description: Linux Mint 18.3 Sylvia Release: 18.3 Codename: sylvia
它可能是一個稀疏文件。這意味著並非所有塊都已分配,並且文件使用的空間比文件大小建議的要少得多。在讀取時,失去的塊將讀取為零。
您也可以使用
-s
選項來ls
查看分配的大小,它應該與報告的大小相同du
。編輯
如果您知道或懷疑一個文件包含許多零字節但不是稀疏的,則可以使用
cp --sparse=always
使其稀疏,從而可能節省大量磁碟空間。cp --sparse=always -p file new_file