Bash 使用ls和du查找文件大小。区别是什么

Bash 使用ls和du查找文件大小。区别是什么,bash,shell,unix,admin,Bash,Shell,Unix,Admin,我的服务器中有一个名为today.log的文件 ls-l today.log显示400GB du-sh today.log。显示240GB ls和du的区别是什么 du显示文件使用的磁盘数量ls显示文件的大小。这两个值可能不同。带有孔的文件可能比其大小占用更少的空间。大多数文件并没有完全填满文件系统的块,因此它们占用的空间比它们的大小还要多。具有单个字节的文件仍然至少占用一个完整块。(通常是512或1024字节)作为一个例子,考虑一个在位置183738475有一个字节的文件(随机类型的数字)。该

我的服务器中有一个名为today.log的文件

ls-l today.log显示400GB

du-sh today.log。显示240GB


ls和du的区别是什么

du
显示文件使用的磁盘数量
ls
显示文件的大小。这两个值可能不同。带有孔的文件可能比其大小占用更少的空间。大多数文件并没有完全填满文件系统的块,因此它们占用的空间比它们的大小还要多。具有单个字节的文件仍然至少占用一个完整块。(通常是512或1024字节)作为一个例子,考虑一个在位置183738475有一个字节的文件(随机类型的数字)。该文件可以使用单个块存储在磁盘上(每当内核查询文件系统中除单个字节以外的字节时,文件系统会将其报告为零,并且不需要存储任何内容。并非所有文件系统都是这样工作的。)但文件的大小是183738475,因此,
ls
将报告这一点,
du
将报告文件系统使用了多少块
du-h
将报告使用的块数乘以转换为人类可读格式的块大小。请记住,实际数字会因文件系统而异。例如:

$ echo > foo; ls -l foo |awk '{print $5}'; du foo; du -h foo
1
8   foo
4.0K    foo
该文件大小为一个字节,但占用磁盘上的8个块,块大小为512,因此这8个块占用4k。(我的文件系统针对大文件进行了优化,而小文件会浪费大量空间。)