我尝试使用 du 今天在单个目录上计算磁盘使用情况。目录的大小为6GB,需要以下时间进行计算:

prompt> time du -sh .
6.0G   .

real    1m32.405s
user    0m2.053s
sys     0m16.552s

什么是算法Unix du命令用于计算磁盘空间?为什么这么慢?是否有其他选择可以更有效地计算磁盘空间?调用平台是 Sun. 。计算大小的目录已安装NFS。

有帮助吗?

解决方案

我认为它只是递归地行走目录,同时将发现的文件的大小加在一起。确实很简单,但这当然需要时间。如果文件系统使这些操作更快,则可能会更快。

其他提示

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

它的速度取决于文件/目录计数。如果您有一个带有6个1GB文件的目录,则需要更少的时间来计算。它计算给定目录中的文件大小,并为每个子目录进行递归。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top