ls 与 du df 输出不一致

ls 与 du df 输出不一致

将返回的文件和目录的大小相加,得到的值与或ls给出的值不同。和命令给出相同的输出,因此我不会经常遇到这个问题,但我知道这是一个“空”设备/文件夹,所以我想知道为什么“不空”使用的空间。dfdudfdu

我首先想到的是隐藏文件,所以我四处搜索,找到了 -a 选项,但数字仍然不对 [24.4 KBls -lah与消息末尾的 df 和 du: 输出的 5.1 MB 相差甚远]。另一个奇怪的事情是 e2fsck 输出,似乎有 13 个文件 [.、..、lost+found,但如何找到剩下的 10 个?]

有人知道我还缺少什么吗?



cd /mnt

# ls -lah
total 24
drwxr-xr-x    3 root     root       20.0K May  7 09:36 .
drwxrwxr-x   17 root     root         420 May  7 09:26 ..
drwx------    2 root     root        4.0K Apr 21 13:42 lost+found


# df -h /mnt
Filesystem                Size      Used Available Use% Mounted on
mmcblk0p1                 1.8G      5.1M      1.7G   0% /mnt


# du -d 0 -h /mnt
5.1M    /mnt


# umount /mnt
# e2fsck -C 0 /dev/mmcblk0p1
e2fsck 1.42.12 (29-Aug-2014)
/dev/mmcblk0p1: clean, 13/117360 files, 8693/468990 blocks

答案1

ls不显示目录内容的大小。它显示用于存储描述目录的元数据的大小。该大小取决于目录中的文件数量及其(和目录)名称的长度,而不是其大小。为了说明这一点,我将创建不同数量的空(0 大小)文件:

## 10 files
for i in {1..10}; do touch foo/$i; done
$ ls -l
drwxr-xr-x 2 terdon terdon 4096 May 11 16:36 foo
$ du -sc foo/* | grep total
0   total

## 100000 files
$ touch foo/file{1..100000}
ls -l
drwxr-xr-x 2 terdon terdon 2801664 May 11 16:37 foo
$ du -sc foo/* | grep total
0   total

ls正如您上面所看到的,尽管目录的实际大小相同,但报告的大小发生了变化。

因此,您丢失的文件可能位于该lost+found目录中,请检查那里。

相关内容