代码之家  ›  专栏  ›  技术社区  ›  Leonid

unix du命令用于计算磁盘空间的算法是什么?

  •  1
  • Leonid  · 技术社区  · 14 年前

    我试过用 du 计算当前单个目录上的磁盘使用量。目录的大小为6GB,计算时间如下:

    prompt> time du -sh .
    6.0G   .
    
    real    1m32.405s
    user    0m2.053s
    sys     0m16.552s
    

    unix du命令用于计算磁盘空间的算法是什么?为什么这么慢?有没有其他方法可以更有效地计算磁盘空间?调用的平台是 Sun . 为其计算大小的目录是NFS mounted。

    3 回复  |  直到 14 年前
        1
  •  0
  •   unwind    14 年前

    我认为它只是递归地遍历目录,同时将找到的文件的大小相加。很简单,真的,但当然需要时间。如果文件系统使这些操作更快,则速度可能更快。

        2
  •  2
  •   Dan D.    14 年前

    du必须列出所有的目录并统计找到的每个文件,最后读取整个磁盘

    在获取文件大小的同时,它对它们进行求和,并在完成后打印出求和

    例如,在这个目录中,sshfs文件系统上有大约200万个文件:

    prompt$ time du -sh .
    367G    .
    
    real    12m53.093s
    user    0m3.848s
    sys     0m14.265s
    

    但由于第二次运行的缓存,只需要:

    prompt$ time du -sh .
    367G    .
    
    real    4m56.875s
    user    0m4.136s
    sys     0m15.257s
    
        3
  •  0
  •   khachik    14 年前

    它的速度取决于文件/目录计数。如果您有一个包含6个1Gb文件的目录,则计算所需的时间要少得多。它计算给定目录中的文件大小,并递归地计算每个子目录的文件大小。

    推荐文章