题
我尝试使用 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文件的目录,则需要更少的时间来计算。它计算给定目录中的文件大小,并为每个子目录进行递归。
不隶属于 StackOverflow