Filesystems

在龐大的目錄樹上執行 rm -rf 需要幾個小時

  • March 26, 2017

我們使用 rsnapshot 進行備份。它保留了許多備份文件的快照,但它確實刪除了舊的。這很好。rm -rf然而,在一個龐大的目錄樹上做一個大約需要 7 個小時。文件系統是 XFS。我不確定那裡有多少個文件,但可能有數百萬個。

有沒有辦法加快速度?是否有任何命令可以執行相同的操作rm -rf並且不需要花費數小時和數小時?

不。

rm -rf對文件系統進行遞歸深度優先遍歷,呼叫unlink()每個文件。導致程序緩慢的兩個操作是opendir()/readdir()unlink(). opendir()並且readdir()取決於目錄中的文件數。unlink()取決於被刪除文件的大小。加快此過程的唯一方法是減少文件的大小和數量(我懷疑這不太可能)或將文件系統更改為具有更好特性的這些操作。我相信 XFS 對於大文件上的 unlink() 很有用,但對於大型目錄結構來說不是很好。您可能會發現 ext3+dirindex 或 reiserfs 更快。我不確定 JFS 的表現如何,但我確信有很多不同文件系統性能的基準。

編輯:XFS 似乎在刪除樹方面很糟糕,所以一定要改變你的文件系統。

引用自:https://serverfault.com/questions/46852