du 报告错误的文件夹大小

du 报告错误的文件夹大小

du当我在某些文件夹上使用时,我看到了一些非常奇怪的结果。

例如:

#cd /storage/main_folder

#du -h --max-depth=2 subfolder1 | grep subfolder2


1.8G    subfolder1/subfolder2/subfolder31
5.3G    subfolder1/subfolder2/subfolder32
352M    subfolder1/subfolder2/subfolder33
76K     subfolder1/subfolder2/subfolder34
1.8G    subfolder1/subfolder2/subfolder35
4.0M    subfolder1/subfolder2/subfolder36
301M    subfolder1/subfolder2/subfolder37
9.4G    subfolder1/subfolder2

# du -h --max-depth=1 subfolder1/subfolder2

1.8G    subfolder1/subfolder2/subfolder31
5.3G    subfolder1/subfolder2/subfolder32
352M    subfolder1/subfolder2/subfolder33
96G     subfolder1/subfolder2/subfolder34
1.8G    subfolder1/subfolder2/subfolder35
4.0M    subfolder1/subfolder2/subfolder36
301M    subfolder1/subfolder2/subfolder37
106G    subfolder1/subfolder2

据我所知,中没有链接或特殊文件subfolder2。该磁盘是本地 RAID 卷,ext4,使用挂载rw,noatime,nodiratime,stripe=64

这可能是什么原因造成的?我该怎么做才能解决这个问题并获得正确的结果?

谢谢你!

[ 编辑,因为我收到了一个链接这个问题:我知道表观大小与块大小。但在这种情况下,请注意:

  1. subfolder34在一个输出中显示为 76K,在另一个输出中显示为 96G。差异太大,无法用表观大小来解释……
  2. 我使用完全相同的du命令,唯一的区别是运行命令时的工作目录。因此,我们可以排除由于不同实用程序计算大小的方式而导致的差异]

答案1

看起来@muru 从他的第一个评论就一针见血——只是我很难理解这是怎么回事,因为硬链接。

du足够智能,只计算一次硬链接文件 - 所以在我的第一个例子中,如果它在subfolder34其他任何地方找到文件,它就不会再次将它们计入文件夹大小。

在第二个命令中,由于我只查看subfolder2,它看不到其他硬链接 - 因此它计算文件的大小。

如果我运行du-l明确告诉它多次计算硬链接),我会得到预期的结果:

#cd /storage/main_folder

#du -h --max-depth=2 subfolder1 | grep subfolder2


1.8G    subfolder1/subfolder2/subfolder31
5.3G    subfolder1/subfolder2/subfolder32
352M    subfolder1/subfolder2/subfolder33
76K     subfolder1/subfolder2/subfolder34
1.8G    subfolder1/subfolder2/subfolder35
4.0M    subfolder1/subfolder2/subfolder36
301M    subfolder1/subfolder2/subfolder37
9.4G    subfolder1/subfolder2

#du -h --max-depth=2 -l subfolder1 | grep subfolder2

1.8G    subfolder1/subfolder2/subfolder31
5.3G    subfolder1/subfolder2/subfolder32
352M    subfolder1/subfolder2/subfolder33
96G     subfolder1/subfolder2/subfolder34
1.8G    subfolder1/subfolder2/subfolder35
4.0M    subfolder1/subfolder2/subfolder36
301M    subfolder1/subfolder2/subfolder37
106G    subfolder1/subfolder2

谢谢@muru的评论,以及对我的许多问题的耐心!:)如果您将评论作为答案发布,我会很高兴接受。

相关内容