2008-11-14 98 views
4

我有一個NTFS文件夾,其中包含數以萬計的文件。我刪除了該文件夾中的所有文件,保存爲1.我運行contig.exe對該文件夾進行碎片整理,現在它只在1片段中。但是,該文件夾的大小仍然爲8MB。這意味着指數有很大的差距。這是爲什麼?如果我刪除一個文件,索引的大小會自動變爲零。我的猜測是因爲它被摺疊到MFT中。有什麼辦法讓NTFS根據文件內容對文件進行碎片整理來真正整理索引文件?你知道的任何API? Contig.exe僅對物理文件進行碎片整理。如何減少NTFS中文件夾索引文件的大​​小?

回答

6

我想這是NTFS就像幾乎所有其他FS一樣 - 他們都不喜歡收縮目錄。

所以,你應該應用包括使用高科技的方法,它採用高級語言編寫,「BAT」 :)

collapse.bat

REM Invoke as "collapse dirname" 
ren dirname dirname.old 
mkdir dirname 
cd dirname.old 
move * ../dirname/ 
cd .. 
rmdir dirname.old 
+4

令人厭惡。但相當該死的聰明:) – warren 2008-11-27 15:34:48

2

鬆弛在索引中,但不一個間隙。我將這種區別暗示爲技術上浪費了空間,但它不像NTFS必須解析8MB才能枚舉/查詢/索引。它知道它的樹根在哪裏,而且恰好有很多額外的剩餘分配。可能太詳細的迴應,因爲它是多麼無益。

碎片可能是一個單獨的問題。

2

在接受這個問題的答案請看:NTFS performance and large volumes of files and directories

筆者提供的有關文件索引碎片一些無證否則信息,這是他在事故發生時從Microsoft技術支持獲得。簡短版本是,DEFRAG不對文件夾索引進行碎片整理,只對該文件夾中的文件進行碎片整理。如果要對文件索引進行碎片整理,則必須使用SysInternals的CONTIG工具,該工具現在由Microsoft擁有並分發(免費)。答案給出了CONTIG的鏈接。