2010-11-30 26 views
1

我試過使用du來計算今天在單個目錄下的磁盤使用情況。目錄大小爲6GB,需要花費以下時間計算:unix du命令用於計算磁盤空間的算法是什麼?

prompt> time du -sh . 
6.0G . 

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

unix du命令用於計算磁盤空間的算法是什麼?爲什麼這麼慢?有沒有其他方法可以更有效地計算磁盤空間?調用平臺爲Sun。計算大小的目錄是NFS掛載的。

+1

沒有足夠的時間來分析確切的算法,儘管您可以在http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/上看到OpenSolaris的du源代碼。杜/ du.c – darioo 2010-11-30 11:13:20

回答

0

我認爲它只是遞歸地遍歷目錄,同時添加找到的文件的大小。很簡單,真的,但當然需要時間。如果文件系統使這些操作更快,它可能會更快。

2

都必須列出所有的目錄和統計發現,每一個文件,以便與在獲取文件的大小也對其求和,完成後它打印和讀遍盤

結束

例如這一個目錄中如2萬個文件在文件系統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 
0

它的速度取決於文件/目錄的數量。如果您有一個包含6個1Gb文件的目錄,則計算所需的時間會少很多。它計算給定目錄中的文件大小,並遞歸地爲每個子目錄計算文件大小。

相關問題