爲何用ls和du顯示出來的文件大小有差異?【轉】

在使用Linux ls命令查看文件大小時,發現文件很大,足有100個G,而使用du命令查看則不超過10個G。linux

[root@shanghai devicemapper]# ls -l
總用量 8692788
-rwxrwxrwx. 1 root root 107374182400 5月   3 19:37 data
-rwxrwxrwx. 1 root root   2147483648 5月   3 10:53 metadata


數數字麻煩,下面這個看得更清楚一些:app

[root@shanghai devicemapper]# ls -lh
總用量 8.3G
-rwxrwxrwx. 1 root root 100G 5月   3 19:42 data
-rwxrwxrwx. 1 root root 2.0G 5月   3 10:53 metadata


du命令顯示文件佔用的空間大小:spa

[root@shanghai devicemapper]# du -h *
8.3G    data
15M    metadata


能夠發現,實際文件大小比佔用的空間大小還大,那又怎麼放得下?
原來這個是由於稀疏文件的緣故,稀疏文件中的「洞」不佔存儲空間。.net

形成這兩者不一樣的緣由主要有兩點:code

  • 稀疏文件(sparse file)
  • ls和du顯示出的size有不一樣的含義


至於什麼是稀疏文件,下面這篇文章解釋的很是詳細:
爲何用ls和du顯示出來的文件大小有差異? - loryliu的專欄 - CSDN博客 https://blog.csdn.net/loryliu/article/details/25337409blog

轉自ci

linux ls列出的文件大小比du還大? - hongweigg的專欄 - CSDN博客 https://blog.csdn.net/hongweigg/article/details/80191049博客

相關文章
相關標籤/搜索