我已尝试使用du
来计算单个目录上的磁盘使用情况。目录的大小为6GB,需要花费以下时间来计算:
prompt> time du -sh .
6.0G .
real 1m32.405s
user 0m2.053s
sys 0m16.552s
unix du命令用于计算磁盘空间的算法是什么?为什么这么慢?有没有其他方法可以更有效地计算磁盘空间?调用平台为Sun
。计算大小的目录是NFS挂载。
答案 0 :(得分:2)
du必须列出所有目录并统计每个找到的文件,以便最终读取整个磁盘
获取文件的大小时,它会将它们相加并在完成时打印总和
例如,在sshfs文件系统上有两百万个文件的这个目录上:
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
答案 1 :(得分:0)
我认为它只是递归地遍历目录,同时将找到的文件大小加在一起。很简单,真的,但当然需要时间。如果文件系统使这些操作更快,则可能会更快。
答案 2 :(得分:0)
它的速度取决于文件/目录数。如果您有一个包含6个1Gb文件的目录,则计算时间将会少得多。它计算给定目录中的文件大小,并递归地计算每个子目录。