du如何估算文件大小?

时间:2017-01-12 06:17:14

标签: linux bash unix du

我正在下载一个包含wget的大文件,我在后台运行wget -bqc。我想看看下载了多少文件,所以我跑了

du -sh *

目录中的

。 (我也有兴趣知道在这种情况下检查wget进展的更好方法,如果有人知道......)我看到已经下载了25 GB,但是之后的几次尝试显示了25 GB的相同结果。我开始担心du在某种程度上干扰了下载,直到du显示33 GB的结果,随后是40 GB。

在搜索stackoverflow和在线时,我没有发现在写入的文件上使用du是否安全,但我确实看到它只是一个估计可能有些偏离。但是,7-8 GB似乎很多,特别是因为它是单个文件,而不是目录树,它似乎是导致估计错误的原因。我有兴趣知道如何对正在编写的单个文件进行估算以及为什么会看到此结果。

2 个答案:

答案 0 :(得分:0)

操作系统必须保证安全访问。

du没有估计任何事情。内核知道文件的大小,并且当du询问它是什么时。

如果文件在千兆字节范围内,并且报告的大小仅具有该粒度,则连续调用显示相同大小应该不足为奇 - 您是否希望wget获取足够的数据以翻转到另一个千兆字节你的支票之间?您可以尝试在没有 sh的情况下运行du 以获得更准确的读数。

另外wget将在ram中保存一些数据,但这应该可以忽略不计。

答案 1 :(得分:0)

du不会进行估算,而是进行汇总。但是它可以访问某些文件系统内部信息,这可能会使它的输出令人惊讶。各个方面应单独查找,因为它们太多了,无法在此处详细说明。

  1. 稀疏文件可能会使文件看起来比磁盘上的文件大。
  2. 硬链接可能会使目录树看起来比磁盘上的目录树大。
  3. 块大小可能会使文件看起来比磁盘上的文件小。

du会始终打印出一个目录树(或几个目录树)的大小,并实际将其实际占用磁盘。由于各种事实(上面给出了三个最常见的事实),这可能与这些树中存储的信息大小不同。